在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}}中强制执行?
答案 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)