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