Rails应用程序中datetime(时区)的奇怪行为

时间:2015-08-16 21:00:13

标签: ruby-on-rails ruby postgresql activerecord timezone

在我们的rails 3.2应用程序中,我们已经配置了

config.time_zone = 'London'
config.active_record.default_timezone = :local

在postgresql中还将时区配置为“Europe / London”。

过去一周,我们的应用日期时间字段无法正常使用时区。

例如,如果我们创建提醒start_date at 2015-08-18 10AM。它在postgres数据库中创建了`2015-08-18 10:00:00。

在模板中显示时,

提醒start date: 2015-08-18 10AM (2015-08-18 10:00:00 +0100 )

BUT,(not always) now frequently its showing UTC time.

提醒start date: 2015-08-18 9AM (2015-08-18 09:00:00 UTC )

无法在开发中复制。

如果我们重新启动unicorn服务器,则它不会发生4小时。

任何人都遇到过这种问题?

1 个答案:

答案 0 :(得分:2)

我修复了此问题,方法是在around filter中添加ApplicationController

around_filter :use_time_zone

private

def use_time_zone(&block)
  Time.use_zone('London', &block)
end

因此,只要默认时区更改为UTC,它就会覆盖并设置为BST