2

我目前看到一个问题,因为我的 Rails 应用程序上的系统时间已从 CEST(+02:00) 更改为 CET (+01:00)。

我得到的问题是,由于某种原因,一些 DateTime 被保存为 CET,而另一些则被保存为 CEST,现在正在创建一条记录。问题是,当从数据库中检索该数据并使用 strftime("%H:%M") 时,它会打印出错误的值,因此如果将其保存为 CEST,则会打印出“10:00”,而如果保存为 CET,它将打印“09:00”。

如何强制系统始终使用 +0200 或 +0100?

通过运行Time.zone我得到“(GMT + 01:00)ROME”,同时运行Time.zone.now我得到时间戳+0200。

我该如何解决这种不一致?我config.time_zone 的设置为“罗马”。

PS我正在使用Rails 3.2.13

4

1 回答 1

2

发现问题。

当我处理日期 >= 26/10/2013 时,问题就出现了,ruby 正确返回了与 DateTime 时间戳关联的 time_zone(不是当前时间戳)。因此,CET 采用后的所有日期都将自动视为 CET。

在数据库级别使用 UTC 似乎是正确的方法。

于 2013-10-24T22:13:03.700 回答