【发布时间】:2011-08-27 05:58:02
【问题描述】:
在 ruby 1.8.7 中解析这个
time_str = "Sun Feb 01 0111 00:00:00 GMT+0530 (IST)"<br />
Time.parse(time_str)<br />
output
Tue Feb 01 00:00:00 +0530 2011
红宝石 1.9.2
time_str = "Sun Feb 01 0111 00:00:00 GMT+0530 (IST)"<br />
Time.parse(time_str)<br />
output <br />
0111-02-01 00:00:00 +0553
你能告诉我到底是什么问题吗?
这是否与 ruby 1.9.2 中的 Time 解析方式有关,如下所示?
Time.parse(time) {|y| 0 <= y && y < 100 ? (y >= 69 ? y + 1900 : y + 2000) : y}
【问题讨论】:
-
您是真的在处理公元 111 年的日期,还是打错字?
-
尝试了一下,我认为 1.9.2 能够处理比 1.8.7 更大的日期范围。似乎可以正确地将此日期视为 2 世纪的日期,并且切换时区会做一些有趣的事情。
-
@d11wtq :这不是错字,我的输入是 0111,其中 ruby 187 转换为 2011(这是我想要的)但 ruby 192 没有,请您帮忙。
-
我不完全确定 0111 在逻辑上应该如何解释为 2011。这是 111 年。如果您无法控制输入源,则必须对字符串进行预处理。跨度>
标签: ruby time ruby-1.9.2 ruby-1.8 datetime-parsing