1

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') %>

我怎样才能强制在EST整个网站上始终显示?

4

3 回答 3

1

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

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

在此处获取更多信息。

于 2013-02-04T05:41:19.873 回答
0

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

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

before_filter :set_timezone

def set_timezone
  Time.zone = 'Eastern Time (US & Canada)'
end
于 2013-02-04T05:35:36.407 回答
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)
于 2013-02-05T03:41:00.200 回答