Rails localtime返回错误的时区

时间:2013-01-20 20:40:52

标签: mysql ruby-on-rails-3 datetime timezone datetimeoffset

我遇到一个问题,在保存datetime属性时,表单返回-04:00而不是-05:00

使用Rails 3.2.3

在application.rb中:

config.time_zone = 'Eastern Time (US & Canada)'

将MySQL与mysql2适配器一起使用

正在运行@wine.released_at.localtime会返回2008-05-15 00:00:00.000000000 -04:00
正在运行@wine.released_at会返回2008-05-15 04:00:00.000000000 Z
正在运行Time.now.zone会返回Eastern Standard Time
正在运行@wine.released_at.zone会返回EDT

我很困惑。我虽然设置config.time_zone应该让Rails自动将所有数据库日期时间值转换为设置的time_zone ...为什么不发生这种情况?

2 个答案:

答案 0 :(得分:0)

我看起来好像zone属性返回了适用于指定时间的“区域间隔”的名称。因此,在夏季,它将返回“EDT”,但在冬季,它将返回“复活节标准时间”。 (奇怪的是,它使用的是一个缩写而不是另一个,但是嘿......)

因此 使用相同的时区 - 这些只是同一时区内的不同方面:有时它是标准时间,有时是夏令时。

如果您打印Time.now.localtime,它应显示-05:00以显示东部时间与UTC的当前偏移量为-5小时(即东部时间目前比UTC晚5小时)。

答案 1 :(得分:0)

您是否尝试过使用in_time_zone?