parse(date, now = Time.now, zone: nil) -> Time[permalink][rdoc][edit] [added by time]parse(date, now = Time.now, zone: nil) {|year| year } -> Time[added by time]-
date を Date._parse によってパースして Timeオブジェクトに変換します。
ブロック付きで呼ばれた場合、dateの年はブロックによって変換されます。
require 'time' Time.parse(...) {|y| y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}与えられた時刻に上位の要素がなかったり壊れていた場合、nowの該当要素が使われます。
require 'time' time = Time.local(2019, 5, 1) p Time.parse("12:00", time) # => 2019-05-01 12:00:00 +0900下位の要素がなかったり壊れていた場合、最小値(1か0)が使われます。
- [PARAM]
date: - Time オブジェクトに変換可能な文字列を指定します。
- [PARAM]
now: - 現在時刻をTime オブジェクトで指定します。デフォルトはTime.nowとなります。
- [PARAM]
zone: -
dateにタイムゾーンやオフセットが含まれていない場合に使うタイムゾーンを文字列で指定します。"+09:00"・"+0900"・"+09"のようなオフセットか、"UTC"・"Z"、"GMT"・"EST"などの [RFC822] で定義された略称、システムのタイムゾーンの略称を指定できます(Time.zone_offset が解釈できる文字列)。これら以外の文字列("Asia/Tokyo"など)は解釈されず、zoneを省略した場合と同じくローカル時刻として扱います。dateにタイムゾーンやオフセットが含まれている場合はそちらが優先されます。省略した場合は nil です。 - [EXCEPTION]
ArgumentError: - dateに空文字列を与えた場合、発生します。なお、1.9.2より前は例外は発生せず、現在時刻を表す Time のインスタンスを返していました。
require 'time' # 現在時刻が "Thu Nov 29 14:33:20 GMT 2001" で # タイムゾーンがGMTとすると: p Time.parse("16:30") # => Thu Nov 29 16:30:00 GMT 2001 p Time.parse("7/23") # => Mon Jul 23 00:00:00 GMT 2001 p Time.parse("2002/1") # => Tue Jan 01 00:00:00 GMT 2002Date._parseがdateから情報を取り出せないとき、または Time クラスが指定された日時を表現できないときに ArgumentError が発生します。
このメソッドは他のパース用メソッドのフェイルセーフとして以下のように使用できます:
require 'time' Time.rfc2822(date) rescue Time.parse(date) Time.httpdate(date) rescue Time.parse(date) Time.xmlschema(date) rescue Time.parse(date)従って Time.parse の失敗はチェックすべきです。
zone を指定する例require 'time' p Time.parse("2000-01-01 12:00:00", zone: "+09:00") # => 2000-01-01 12:00:00 +0900 p Time.parse("2000-01-01 12:00:00", zone: "UTC") # => 2000-01-01 12:00:00 UTC p Time.parse("2000-01-01 12:00:00 +01:00", zone: "UTC") # => 2000-01-01 12:00:00 +0100 - [PARAM]