我正在使用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