【问题标题】:Rails 3 time zone issue (database is 5 hours off)Rails 3 时区问题(数据库关闭 5 小时)
【发布时间】:2012-02-27 16:39:48
【问题描述】:

所以在我的 Rails 控制台中。如果我检查 Time.now,这就是我得到的:

1.9.2p290 :014 > Time.now
 => 2012-02-06 01:00:43 -0500 
1.9.2p290 :015 > Time.now.zone
 => "EST"

在我的 application.rb 中,我将时区设置如下:

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

但是,当我将一些东西存储到数据库中时,它仍然是 5 个小时:

1.9.2p290 :011 > event = Event.new(:message => 'blah', :status_id => 1, :service_id => 1, :created_at => Time.now)
 => #<Event id: nil, message: "blah", status_id: 1, service_id: 1, created_at: "2012-02-06 05:55:26", updated_at: nil>

为什么要休息五个小时?如果我比较每个区域,这就是我得到的:

1.9.2p290 :016 > event.created_at.zone
 => "EST" 
1.9.2p290 :017 > Time.now.zone
 => "EST" 

【问题讨论】:

    标签: ruby-on-rails time timestamp


    【解决方案1】:

    好的,我解决了这个问题。看起来 application.rb 中的这一行引起了问题。 config.active_record.default_timezone = '东部时间(美国和加拿大)'

    根据 ActiveRecord::Timestamp 文档,ActiveRecord 默认使用本地时区。 http://api.rubyonrails.org/classes/ActiveRecord/Timestamp.html

    【讨论】:

      【解决方案2】:

      在 AR 3.2.1 中,您必须将此选项设置为 :utc 或 :local,否则您将收到以下警告:

      警告::database_timezone 选项必须是 :utc 或 :local - 默认为 :local

      【讨论】:

        猜你喜欢
        • 2011-09-19
        • 1970-01-01
        • 1970-01-01
        • 2019-11-24
        • 1970-01-01
        • 2019-07-25
        • 2022-06-10
        • 2012-03-17
        • 2012-02-27
        相关资源
        最近更新 更多