Ruby:Offset由Time和DateTime以不同方式解释

时间:2011-04-07 10:21:47

标签: ruby parsing time datetimeoffset

有谁知道为什么Time.parse似乎误解了偏移?

# Correct:
ruby-1.9.2-p136 > DateTime.parse "2011-04-07T13:53:00-3"
 => Thu, 07 Apr 2011 13:53:00 -0300 

ruby-1.9.2-p136 > Time.parse "2011-04-07T13:53:00-3"
 => 2011-04-07 13:53:00 +0300 

格式似乎没有任何区别:

ruby-1.9.2-p136 :027 > Time.parse "2011-04-07T13:53:00-0300"
 => 2011-04-07 19:53:00 +0300 
ruby-1.9.2-p136 :028 > Time.parse "2011-04-07T13:53:00-03"
 => 2011-04-07 19:53:00 +0300 
ruby-1.9.2-p136 :029 > Time.parse "2011-04-07T13:53:00-03:00"
 => 2011-04-07 19:53:00 +0300 

1 个答案:

答案 0 :(得分:2)

我认为Time.parse会将其转换为您的时区。因此,如果您在+3并且给它的时间为13.53:00-3,则当地时间为19.53:00 + 3。

另外,如果您查看Ruby Doc,您会看到Time#parse方法只能理解RFC 822和系统时区中描述的时区缩写。

所以你应该使用“-0300”而不是“-3”。