RubyのTimeクラスとDateクラス、DateTimeクラスの比較。
Timeクラスはtime.rbを読み込まなかった場合で比較。
Time
- 日付と時間を扱う
- 組み込みクラス(requireしなくても使える)
- 現在日時で生成するには、Time.now
- 日時を指定して生成するには、Time.gm(...) or Time.utc(...) or Time.local(...) or Time.mktime(...)
- 文字列に変換すると、C言語のctime()に準じた形式になる (例:Tue Dec 11 15:25:35 +0900 2007 )
Date
- 日付を扱う
- 使うには require "date" する必要がある
- 現在日付で生成するには、Date.today
- 日付を指定して生成するには、Date.new(...)
- 文字列に変換すると、ISO8601形式になる (例:2007-12-11 )
DateTime
- 日付と時間を扱う
- Dateクラスのサブクラス。使うには require "date" する必要がある
- 現在日時で生成するには、DateTime.now
- 日時を指定して生成するには、DateTime.new(...)
- 文字列に変換すると、ISO8601形式になる (例:2007-12-11T15:31:30+0900 )
補足
- 日時を表す文字列から日時情報を取り出すには、ParseDate::parsedate()が使える。(日付だけならDate.strptime()でもできる。)
require "parsedate"
p ParseDate::parsedate("Tue 18, Dec 2007 15:52:30 +0900")
#=> [2007, 12, 18, 15, 52, 30, "+0900", 2] - DateTimeクラスでタイムゾーンを指定するには、Rationalクラスを使う。Ratinalの第1引数にタイムゾーンの時間差、第2引数には24を指定する。
require "date"
# 生成時に指定する場合
d = DateTime.new(2007, 12, 18, 15, 57, 30, Rational(9, 24))
print d #=> 2007-12-18T15:57:30+0900
# 後から指定する場合
d2 = d.new_offset(Rational(-5, 24))
print d2 #=> 2007-12-18T15:57:30-0500
- 標準添付のtime.rbを読み込む(require "time")と、いろいろ便利なメソッドが使える。
require "time"
# 日時の文字列をパース
t = Time.parse("2007-12-11T18:21+09:00")
# RFC2822形式で出力
print t.rfc2822 #=> Tue, 11 Dec 2007 18:21:00 +0900
# ISO8601形式で出力
print t.iso8601 #=> 2007-12-11T18:21:00+09:00
参考
逆引きRuby - 日付と時刻
日付の表記に関するノート
DateTimeにタイムゾーンを設定する。 - こせきの技術日記
Rubyで日付・時間を操作 - I sort my thought...
0 件のコメント:
コメントを投稿