我重构的一些代码红宝石图书馆。这个守则包括一个日期分析器。一个测试来分析这一串"2008-02-20T8:05:00-010:00"这应该是 ISO8601.

前面的代码实际上会产出:"三月20 18:05:00UTC2008".我的新代码产出:"三月20 16:05:00UTC2008".

我的问题是:哪一个是正确的?

Time.parse 在红宝石给第二个。但是,我再次想要100%确保以前的编码和测试是越野车。

哪一个是正确的?(由也许分析字符串与图书馆在另一种语言?-我只知道红宝石。)

有帮助吗?

解决方案

正确的UTC时间是1805年的时间基表示在0805区-10,因此要获得UTC添加10为给定的时间。因此1805由于1805是小于2400是在同一天。

如果你的代码是给1605,那么你几乎可以肯定的时区设置不正确,以区-8,这恰好是太平洋标准时间。


啊哈,看起来像你的输入格式的混乱。观察:

irb(main):003:0> Time.parse("2008-02-20T8:05:00-010:00") 
=> Wed Feb 20 08:05:00 -0700 2008

我碰巧在区-7因此它相适应的是我的语言环境。但

irb(main):004:0> t=Time.parse("2008-02-20T8:05:00-010:00")
=> Wed Feb 20 08:05:00 -0700 2008
irb(main):005:0> t
=> Wed Feb 20 08:05:00 -0700 2008
irb(main):006:0> t.getutc
=> Wed Feb 20 15:05:00 UTC 2008

我收到了意想不到的结果。现在观察:

irb(main):007:0> t=Time.parse("2008-02-20T8:05:00-10:00")
=> Wed Feb 20 11:05:00 -0700 2008
irb(main):008:0> t.getutc
=> Wed Feb 20 18:05:00 UTC 2008

有年代的有望的结果。看到不同?第一示例VS第二:

irb(main):004:0> t=Time.parse("2008-02-20T8:05:00-010:00")
irb(main):007:0> t=Time.parse("2008-02-20T8:05:00-10:00")

我把假额外0出(其中的 I 的肯定没有注意到任何)和嗖,它的工作原理。

其他提示

我知道这是很老,但我只是碰到它跑了。

我敢打赌,一些地方被解释010作为的的与值8号也许是在Time.parse()的实现中的错误?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top