Rails时区的混乱



我的时区配置看起来像这个

config.time_zone = 'Pacific Time (US & Canada)'
  config.active_record.default_timezone = 'Pacific Time (US & Canada)'

当我查询对象的created_at时,它会返回一个类似于的值

2.1.5 :070 > b.created_at
 => Tue, 07 Apr 2015 20:49:58 PDT -07:00 

创建对象时的DateTime值如下

2.1.5 :071 > DateTime.now
 => Wed, 08 Apr 2015 03:49:58 -0700 

这意味着我得到的created_at字段的值比PDT晚了7个小时。我不明白为什么会发生这种情况。这是因为我的配置中有任何错误吗。

最终发现问题在中

config.active_record.default_timezone = 'Pacific Time (US & Canada)'

Postgresql以UTC保存日期,当我们在rails中查询时,它会根据我们的配置调整时区。

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

上述线将时间转换为PDT。

config.active_record.default_timezone='太平洋时间(美国和加拿大)'

这行配置强制应用程序将PDT时区值中的数据保存到DB中,因此稍后当我们查询控制台时,它会再次调整时区,因此查询的时间将相差7小时。

相关内容

  • 没有找到相关文章

最新更新