所以在我的 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"
最佳答案
好的,我解决了这个问题。看起来 application.rb 中的这一行导致了问题。 config.active_record.default_timezone = '东部时间(美国和加拿大)'
根据 ActiveRecord::Timestamp 文档,ActiveRecord 将默认使用本地时区。 http://api.rubyonrails.org/classes/ActiveRecord/Timestamp.html
关于ruby-on-rails - Rails 3 时区问题(数据库关闭 5 小时),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9156153/