如何更改Rails中Active Record的默认时区?
在我的application.rb我遇到了以下的评论 
 # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. config.time_zone = 'Eastern Time (US & Canada)' 
 正如你从上面看到的,我已经将config.time_zone为EST时间。 但是,仍然在DB中创buildlogging时,看起来datetime是以UTC格式存储的。 
他们在上面的评论中说
…并使活动logging自动转换到此区域…
我怎么能做到这一点,在哪里?
另外,我也会在heroku上部署这个,我希望这个设置继续下去
 将以下内容添加到application.rb 
  config.time_zone = 'Eastern Time (US & Canada)' config.active_record.default_timezone = :local # Or :utc 
我决定编译这个答案,因为所有其他人似乎是不完整的。
config.active_record.default_timezone确定在从数据库中提取date和时间时是否使用Time.local(如果设置为:local)或Time.utc(如果设置为:utc)。 缺省值是:utc。 http://guides.rubyonrails.org/configuring.html
如果您想要更改Rails时区,但是继续将Active Record中的Active Record保存在数据库中,请使用
 # application.rb config.time_zone = 'Eastern Time (US & Canada)' 
如果您想更改Rails时区并在此时区中有Active Record存储时间,请使用
 # application.rb config.time_zone = 'Eastern Time (US & Canada)' config.active_record.default_timezone = :local 
警告 :在非UTC格式的数据库中保存时间之前,您应该三思而后行,甚至三次。
注意
修改application.rb之后,不要忘记重新启动Rails服务器。
 请记住, config.active_record.default_timezone只能取两个值 
-   :本地 (转换为在config.time_zone定义的时区)
- :utc (转换为UTC)
以下是如何find所有可用的时区
 rake time:zones:all 
 经过痛苦之后,我得出了和佩里院长一样的结论。  config.time_zone = 'Adelaide'和config.active_record.default_timezone = :local是获胜组合。 这是我在这个过程中发现的。 
 在我的情况下(Rails 5),我结束了在我的app/config/environments/development.rb添加这两行 
 config.time_zone = "Melbourne" config.active_record.default_timezone = :local 
而已! 为了确保墨尔本被正确读取,我在terminal上运行了命令:
 bundle exec rake time:zones:all 
墨尔本在我所在的时区上市!
如果你想将时区设置为全球UTC,你可以在Rails 4中执行以下操作:
 # Inside config/application.rb config.time_zone = "UTC" config.active_record.default_timezone = :utc 
一定要重新启动您的应用程序,否则您将看不到更改。
 在rails 4.2.2上,转到application.rb并使用config.time_zone='city' (例如:'London'或'Bucharest'或'Amsterdam'等)。 
它应该工作得很好。 它为我工作。
 对于中国用户,只需在config/application.rb添加两行即可: 
 config.active_record.default_timezone = :local config.time_zone = 'Beijing' 
 如果您想要设置本地时间,请在application.rb添加以下文本 
 config.time_zone = 'Chennai' # WARNING: This changes the way times are stored in the database (not recommended) config.active_record.default_timezone = 'Chennai' 
然后重新启动服务器