我的时区配置看起来像这样
config.time_zone = 'Pacific Time (US & Canada)'
config.active_record.default_timezone = 'Pacific Time (US & Canada)'
当我查询Object的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个小时。我无法理解为什么会发生这种情况。这是因为我的配置中有任何错误。
答案 0 :(得分:0)
终于弄明白了,问题出在了
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时区值保存到数据库,因此稍后当我们查询控制台时,它会再次调整时区,因此查询时间会有7小时的差异。