前々から、あったらいいなーと思ってたので、vital に DateTime ってモジュールを書いた。名前の通り、日時を扱うライブラリ。
日付の取り扱いは面倒なことは容易に想像できたけど、やはりすごく面倒だった…てかまだあちこち未完成。
とりあえず簡単に使い方を解説。詳細は help 書いてあるんでそちらを。
DateTime オブジェクト
日時を表す。最小単位は秒。
wikipedia:先発グレゴリオ暦を扱います。ユリウス暦? 何それ。
ファクトリ
使い方は関数名と引数から察してください。
メソッド
- DateTime.year()
- DateTime.month()
- DateTime.day()
- DateTime.hour()
- DateTime.minute()
- DateTime.second()
- DateTime.timezone()
- DateTime.timezone({timezone})
- DateTime.day_of_week()
- DateTime.day_of_year()
- DateTime.days_from_era()
- DateTime.julian_day([{float}])
- DateTime.seconds_of_day()
- DateTime.quarter()
- DateTime.unix_time()
- DateTime.is_leap_year()
- DateTime.is({DateTime})
- DateTime.compareTo({DateTime})
- DateTime.delta({DateTime})
- DateTime.to({TimeDelta})
- DateTime.to({TimeZone})
- DateTime.format({format} [, {locale}])
- DateTime.strftime({format})
- DateTime.to_string()
TimeZone オブジェクト
タイムゾーンを表す。今のところオフセット情報のみを持つ。
名前も扱いたいけど、データを全部ぶち込む必要があるし、どうしようか…。
ファクトリ
- timezone({timezone})
- 秒数(Number) か "+0900" のような文字列。
- 名前をサポートすることになったらそれも受け付ける。
TimeDelta オブジェクト
DateTime 同士の差分を表す。
ファクトリ
- delta()
- delta({days}, {seconds})
- delta({value}, {unit}, ...)
- 値と単位のペア。複数指定可能。
- 単位は、second, minute, hour, day, week
メソッド
- TimeDelta.seconds()
- TimeDelta.minutes()
- TimeDelta.hours()
- TimeDelta.days()
- TimeDelta.weeks()
- TimeDelta.months()
- TimeDelta.years()
- TimeDelta.total_seconds()
- TimeDelta.sign()
- TimeDelta.negate()
- TimeDelta.add({other})
- TimeDelta.about()
- TimeDelta.to_string()
その他の関数
- compare({datetime1}, {datetime2})
- month_names([{longname} [, {locale}]])
- 月の名前の配列を返す。
- weekday_names([{longname} [, {locale}]])*Vital.DateTime.weekday_names()*
- 週の名前の配列を返す。
- am_pm_names([{lowercase} [, {locale}]])
- am/pmの名前の配列を返す。
- is_leap_year({year})
format について
from_format() と DateTime.format() で使える format について。
基本的に strftime() を参考にしてます。全部は使えないし完璧ではないですが。
%a %A %b %B %d %c %C %D %e %F %H %I %j %k %l %m %n %M %p %P %r %R %s %S %t %u %U %T %w %y %Y %z %%
help に一通り書いてあるので詳細はそちらで。まあほぼ man strftime のコピペですが。注意点として、%c が独自仕様で "%F %T %z" になってる。もっと一般的なW3CDTFとかに変えるかも。
私自身が日付周りにはそこまで詳しくないので、あちこち間違ってる可能性があります。
間違いや要望等があったら Issues やその他私宛てに遠慮なくどうぞ。