Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > timeライブラリ > Timeクラス > parse

singleton method Time.parse

parse(date, now = Time.now) -> Time[permalink][rdoc] [added by time]
parse(date, now = Time.now) {|year| year } -> Time [added by time]

date を Date._parse によって パースして Timeオブジェクトに変換します。

ブロック付きで呼ばれた場合、dateの年はブロックによって変換されます。

Time.parse(...) {|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}

与えられた時刻に上位の要素がなかったり壊れていた場合、nowの 該当要素が使われます。 下位の要素がなかったり壊れていた場合、最小値(1か0)が使われます。

[PARAM] date:
Time オブジェクトに変換可能な文字列を指定します。
[PARAM] now:
現在時刻をTime オブジェクトで指定します。 デフォルトはTime.nowとなります。
[EXCEPTION] ArgumentError:
dateに空文字列を与えた場合、発生します。 なお、1.9.2より前は例外は発生せず、現在時刻を表す Time のインスタンスを返していました。
# 現在時刻が "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

Date._parseが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 の失敗はチェックすべきです。