組み込みの Time クラスを拡張します。日時を表す文字列をパースして Time オブジェクトに変換したり、逆に Time オブジェクトを RFC などで定められた文字列に変換したりする機能を提供します。
[ruby-src:lib/time.rb]参照 執筆者募集
Time.parse(date, now=Time.now)
Time.parse(date, now=Time.now) {|year| year}
dateをParseDate.parsedateによって パースしてTimeオブジェクトに変換します。
ブロック付きで呼ばれた場合、dateの年はブロックによって変換されます。
例:
Time.parse(...) {|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}
与えられた時刻に上位の要素がなかったり壊れていた場合、nowの 該当要素が使われます。 下位の要素がなかったり壊れていた場合、最小値(1か0)が使われます。
例:
# 現在時刻が "Thu Nov 29 14:33:20 GMT 2001" で # タイムゾーンがGMTとすると: Time.parse("16:30") #=> Thu Nov 29 16:30:00 GMT 2001 Time.parse("7/23") #=> Mon Jul 23 00:00:00 GMT 2001 Time.parse("2002/1") #=> Tue Jan 01 00:00:00 GMT 2002
ParseDateがdateから情報を取り出せないとき、または Timeクラスが指定された日時を表現できないときにArgumentErrorが 発生します。
このメソッドは他のパース用メソッドのフェイルセーフとして以下のように使用できます:
Time.rfc2822(date) rescue Time.parse(date) Time.httpdate(date) rescue Time.parse(date) Time.xmlschema(date) rescue Time.parse(date)
従ってTime.parseの失敗はチェックすべきです。
Time.rfc2822(date)
Time.rfc822(date)
RFC 2822で定義されているdate-timeとしてdateをパースして Timeオブジェクトに変換します。 この形式はRFC 822で定義されてRFC 1123で更新された形式と 同じです。
dateがRFC 2822に準拠していない、または Timeクラスが指定された日時を表現できないときにArgumentErrorが 発生します。
Time.httpdate(date)
RFC 2616で定義されているHTTP-dateとしてdateをパースして Timeオブジェクトに変換します。
dateがRFC 2616に準拠していない、または Timeクラスが指定された日時を表現できないときにArgumentErrorが 発生します。
Time.xmlschema(date)
Time.iso8601(date)
XML Schema で定義されているdateTimeとしてdateをパースして Timeオブジェクトに変換します。
dateがISO 8601で定義されている形式に準拠していない、または Timeクラスが指定された日時を表現できないときにArgumentErrorが 発生します。
Time#rfc2822
Time#rfc822
RFC 2822で定義されているdate-timeとして表現される以下の形式の文字列を返します:
day-of-week, DD month-name CCYY hh:mm:ss zone
ただし zoneは [+-]hhmm です。
selfがUTC timeの場合、zoneは +0000 になります。
Time#httpdate
RFC 2616で定義されているHTTP-dateのrfc1123-dateとして 表現される以下の形式の文字列を返します:
day-of-week, DD month-name CCYY hh:mm:ss GMT
注意: 結果はいつも UTC (GMT) です。
Time#xmlschema([fractional_seconds])
Time#iso8601([fractional_seconds])
XML Schemaで定義されているdateTimeとして 表現される以下の形式の文字列を返します:
CCYY-MM-DDThh:mm:ssTZD CCYY-MM-DDThh:mm:ss.sssTZD
ただし TZD は Z または [+-]hh:mm です。
If self is a UTC time, Z is used as TZD. [+-]hh:mm is used otherwise.
fractional_secondsは小数点以下の秒を指定します。 fractional_secondsのデフォルト値は0です。