kind=added
names=parse
visibility=public

--- parse(date, now = Time.now)
--- parse(date, now = Time.now) {|year| year }

date を [[m:ParseDate.#parsedate]] によって
パースして [[c: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

[[lib:parsedate]]がdateから情報を取り出せないとき、
または [[c:Time]] クラスが指定された日時を表現できないときに
[[c:ArgumentError]] が発生します。

このメソッドは他のパース用メソッドのフェイルセーフとして
以下のように使用できます:

  Time.rfc2822(date) rescue Time.parse(date)
  Time.httpdate(date) rescue Time.parse(date)
  Time.xmlschema(date) rescue Time.parse(date)

従って [[m:Time.parse]] の失敗はチェックすべきです。

