如何在生产中配置Rails以使用config.time_zone而不是服务器时区?

时间:2013-02-04 04:55:14

标签: ruby-on-rails

config/application.rb中,我将时区设置为EST:

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

生产服务器具有CST时区。因此,我的所有日​​期时间都以CST代替EST显示时间。时间在UTC中正确存储在数据库中。

EST: -0500
CST: -0600

Database in UTC: 18:15:00
Displayed in CST: 12:15:00
Want in EST: 13:15:00

date_time的架构是:

t.datetime "date_time"

在视图中,我将date_time称为:

<%= Show.find(1).date_time.strftime('%H:%M') %>

如何在整个网站{/ 1}}中强制执行?

3 个答案:

答案 0 :(得分:1)

使用config.time_zone = 'Central Time (US & Canada)'(它实际上是config/application.rb中的示例行)并使用localize帮助器:

<%= l Show.find(1).date_time, format: '%H:%M' %>

获取更多信息here

答案 1 :(得分:0)

使用Time.zone = 'Eastern Time (US & Canada)'

更新:尝试将其添加到application_controller.rb

before_filter :set_timezone

def set_timezone
  Time.zone = 'Eastern Time (US & Canada)'
end

答案 2 :(得分:0)

原来这是我构建Time对象的方式中的一个错误。以下构造将获取服务器的默认区域Central Time

Time.new(2012, 1, 1, 11, 0)

我必须指定config.time_zone中描述的时区,该时区正确选择EST

Time.new(2012, 1, 1, 11, 0, Time.zone.formatted_offset)