我正在使用Time.parse從字符串創建一個Time對象。Ruby Time.parse給我超出範圍錯誤
出於某種原因
Time.parse("05-14-2009 19:00")
引起爭論的誤差範圍內我們的,而
Time.parse("05-07-2009 19:00")
不
任何想法?
我正在使用Time.parse從字符串創建一個Time對象。Ruby Time.parse給我超出範圍錯誤
出於某種原因
Time.parse("05-14-2009 19:00")
引起爭論的誤差範圍內我們的,而
Time.parse("05-07-2009 19:00")
不
任何想法?
我的猜測是,它期待字符串(14)是一月份的第二部分。
它可能是期待日 - 月 - 年的格式,所以你的第一個值是試圖指定14月的第5天。
如果您知道該字符串使用的格式:
Time.strptime(date, format, now=self.now) {|year| ...}
http://www.ruby-doc.org/core-1.9/classes/Time.html#M000266
這將解決您的問題,可能比Time.parse
更快。
編輯:
看起來他們採取了strptime
從時間類,但它叫Date.strptime
反正。如果你是on Rails的,你可以這樣做:
Date.strptime("05-14-2009 19:00","%m-%d-%Y %H:%M").to_time
如果使用純Ruby,那麼你需要:
require 'date'
d=Date._strptime("05-14-2009 19:00","%m-%d-%Y %H:%M")
Time.utc(d[:year], d[:mon], d[:mday], d[:hour], d[:min],
d[:sec], d[:sec_fraction], d[:zone])
這是因爲Time#parse
啓發的。
而且這是由於英美格式。
隨着破折號 ' - ',預計MM-DD-YYYY,用斜槓 '/',它預計DD /月/年。
這種行爲改變有意在1.9。完成eur,iso和jp日期標準。
你也許並不需要它來解決這個問題,但我還是建議檢查出的自然語言日期/時間解析器Chronic,它爲我節省了大量的工作幾次。
strptime看起來很酷,但我得到了一個未定義的Time.strptime方法,我需要一個時間對象 – Tony 2009-04-29 13:50:59
...這裏是用法Time.strptime(date_time ['value'],「%m-%d-%Y %H:%M「) – Tony 2009-04-29 13:51:23