Omn*_*ent 130 ruby timezone ruby-on-rails rails-activerecord
在我看来,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)'
Run Code Online (Sandbox Code Playgroud)
从上面看,我已经config.time_zone到了EST时间.但是,仍然在DB中创建记录时,它看起来像是datetime以UTC格式存储.
他们说,在上面的评论中
...并使Active Record自动转换为此区域...
我怎么能这样做,在哪里?
此外,我将在heroku上部署这个,我希望设置继续
Omn*_*ent 181
添加以下application.rb作品
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local # Or :utc
Run Code Online (Sandbox Code Playgroud)
Mih*_*scu 173
我已经决定编译这个答案,因为所有其他答案似乎都不完整.
config.active_record.default_timezone确定从数据库中提取日期和时间时是否使用Time.local(如果设置为:local)或Time.utc(如果设置为:utc).默认值为:utc. http://guides.rubyonrails.org/configuring.html
如果要更改Rails时区,但继续在UTC中保存数据库中的Active Record,请使用
# application.rb
config.time_zone = 'Eastern Time (US & Canada)'
Run Code Online (Sandbox Code Playgroud)
如果你想改变Rails的时区和有活动记录储存时间在该时区,使用
# application.rb
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local
Run Code Online (Sandbox Code Playgroud)
警告:在以非UTC格式在数据库中保存时间之前,您确实应该三思而后行,甚至三次.
注意
修改后不要忘记重新启动Rails服务器application.rb.
请记住,config.active_record.default_timezone只能采用两个值
config.time_zone)以下是您可以找到所有可用时区的方法
rake time:zones:all
Run Code Online (Sandbox Code Playgroud)
小智 20
在我的情况下(Rails 5),我最终添加了这两行 app/config/environments/development.rb
config.time_zone = "Melbourne"
config.active_record.default_timezone = :local
Run Code Online (Sandbox Code Playgroud)
而已!为了确保正确读取墨尔本,我在终端中运行了命令:
bundle exec rake time:zones:all
墨尔本在我所在的时区上市!
ser*_*erg 10
如果要将时区全局设置为UTC,可以在Rails 4中执行以下操作:
# Inside config/application.rb
config.time_zone = "UTC"
config.active_record.default_timezone = :utc
Run Code Online (Sandbox Code Playgroud)
请务必重新启动您的应用程序,否则您将看不到更改.
在 Ruby on Rails 6.0.1 中,转到config > locales > application.rb并添加以下内容:
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
Run Code Online (Sandbox Code Playgroud)
你可以看到我用两行配置时区:
config.active_record.default_timezone =: local
config.time_zone = 'Lima'
Run Code Online (Sandbox Code Playgroud)
我希望它对那些使用 Ruby on Rails 6.0.1 的人有所帮助
| 归档时间: |
|
| 查看次数: |
101371 次 |
| 最近记录: |