如何更改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)\'
从上面可以看到,我到EST的时间是2英镑。但是,即使在数据库中创建记录时,看起来还是以UTC格式存储了“ 3”。 在上面的评论中,他们说   ...并使Active Record自动转换为该区域... 我该怎么办?在哪里? 另外,我也会在heroku上部署它,并且我希望设置可以继续使用     
已邀请:
在following0ѭ作品中添加以下内容
 config.time_zone = \'Eastern Time (US & Canada)\'
 config.active_record.default_timezone = :local # Or :utc
    
我决定编译此答案,因为其他所有答案似乎都不完整。   config.active_record.default_timezone确定从数据库中提取日期和时间时是使用Time.local(如果设置为:local)还是Time.utc(如果设置为:utc)。默认值为:utc。   http://guides.rubyonrails.org/configuring.html 如果要更改Rails时区,但继续将Active Record保存在UTC中,请使用
# 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格式保存时间之前,您确实应该三思而后行,甚至三次。   注意   修改“ 0”后,不要忘记重新启动Rails服务器。 请记住,
config.active_record.default_timezone
只能取两个值 :local(转换为
config.time_zone
中定义的时区) :utc(转换为UTC) 这是您如何找到所有可用时区的方法
rake time:zones:all
    
在经历了很多痛苦之后,我得出了与院长佩里相同的结论。
config.time_zone = \'Adelaide\'
config.active_record.default_timezone = :local
是获胜组合。这是我在此过程中发现的。     
以我的情况(第5道)为例,我最后在ѭ14中添加了这两行
config.time_zone = \"Melbourne\"
config.active_record.default_timezone = :local
而已!为了确保正确读取墨尔本,我在终端中运行了命令:
bundle exec rake time:zones:all
而墨尔本正在列出我所在的时区!     
如果要将全局时区设置为UTC,则可以在Rails 4中执行以下操作:
# Inside config/application.rb
config.time_zone = \"UTC\"
config.active_record.default_timezone = :utc
请确保重新启动您的应用程序,否则您将看不到更改。     
在导轨4.2.2上,转到
application.rb
并使用
config.time_zone=\'city\'
(例如:\'London \'或\'Bucharest \'或\'Amsterdam \'等)。 它应该工作正常。它为我工作。     
我不得不将此块添加到我的
environment.rb
文件中,一切正常:)
Rails.application.configure do
    config.time_zone = \"Pacific Time (US & Canada)\"
    config.active_record.default_timezone = :local
end
我在ѭ22行之前添加了它     
对于中国用户,只需在您的下面加上两行
config/application.rb
config.active_record.default_timezone = :local
config.time_zone = \'Beijing\'
    
在Ruby on Rails 6.0.1中,转到config> locales> application.rb和agrega lo siguiente:
require_relative \'boot\'

require \'rails/all\'

# Require the gems listed in Gemfile, including any gems
# you\'ve limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

module CrudRubyOnRails6
  class Application < Rails::Application
    # Initialize configuration defaults for originally generated Rails version.
    config.load_defaults 6.0

    config.active_record.default_timezone = :local
    config.time_zone = \'Lima\'

    # Settings in config/environments/* take precedence over those specified here.
    # Application configuration can go into files in config/initializers
    # -- all .rb files in that directory are automatically loaded after loading
    # the framework and any gems in your application.
  end
end
您可以看到我正在用2行配置时区:
config.active_record.default_timezone =: local
config.time_zone = \'Lima\'
我希望它对使用Ruby on Rails 6.0.1的人有所帮助     
如果要设置本地时间,请在“ 0”中添加以下文本
config.time_zone = \'Chennai\'

# WARNING: This changes the way times are stored in the database (not recommended)
config.active_record.default_timezone = :local
然后重新启动服务器     

要回复问题请先登录注册