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
。
在我们的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
。