2013-03-26 63 views
0

我正在使用Ruby on Rails来开发包含时区转换的应用程序。发现了一件有趣的事情:现在是2013年3月26日,我将时区设置为雅典,它似乎已经在DST(Time.zone显示GMT +2雅典,但格式化时间显示+0300)。然后我改成开罗时间,格式化的时间回到+0200Ruby中的DST不准确?

但是,根据http://www.timeanddate.com/time/dst/2013.html,夏令时的变化应该发生在3月31日。它不应该在DST中。

这是Ruby中的错误,还是我犯了一个错误?

编辑: 我从数据库格式化日期时间,即4月1日。因此,该程序将该时间格式化,并显示DST为“该”日期时间,而不是在当前时间显示。

我的不好。谢谢大家

+0

什么是您正在运行的代码?通过改变时区,你的意思是什么? – 2013-03-26 03:49:27

+1

显示您正在谈论的代码非常重要,而不是让我们想象它。 – 2013-03-26 04:32:42

回答

1

我怀疑你看到的UTC并不是你所期望的。如果您正在查看时区,我相信UTC偏移量不会改变为DST,但如果您处理特定的时间并要求UTC偏移量,您将看到您的预期。

> ActiveSupport::TimeZone['Athens'].now.utc_offset 
=> 7200 

> (ActiveSupport::TimeZone['Athens'].now+1.week).utc_offset 
=> 10800 
+0

我认为,这个过程总是处理一个时区的特定时间,而不是时区本身。 – 2013-03-26 03:53:30

+0

谢谢,这是我进入的确切错误 – bobzsj87 2013-03-27 03:10:05