Rails localtime返回错误的时区



我有一个问题,当保存一个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

我很困惑。我想设置配置。time_zone应该使Rails自动将所有数据库datetime值转换为设置time_zone…为什么这种情况没有发生?

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

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

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

您尝试过使用in_time_zone吗?

相关内容

  • 没有找到相关文章

最新更新