Rails 应用程序中日期时间(时区)的奇怪行为

Weird Behaviors of datetime(timezone) in Rails application

在我们的rails3.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 )

无法在开发中重现。

如果我们重新启动独角兽服务器,那么它将在 4 小时内不会发生。

有人遇到过这种问题吗?

我通过在 ApplicationController 中添加 around filter 解决了这个问题。

around_filter :use_time_zone

private

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

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