在我的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时间。但是,仍然在数据库中创建记录时,看起来datetime
以UTC格式存储。
在上面的评论中,他们说
...并将Active Record自动转换为此区域...
我该怎么做,在哪里?
另外,我也将在heroku上部署这个,我希望设置继续
答案 0 :(得分:171)
将以下内容添加到application.rb
作品
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local # Or :utc
答案 1 :(得分:160)
我决定编写这个答案,因为其他所有答案似乎都不完整。
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)'
如果您想在此时区更改 Rails 时区 AND 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
中定义的时区)以下是查找所有可用时区的方法
rake time:zones:all
答案 2 :(得分:34)
config.time_zone = 'Adelaide'
和config.active_record.default_timezone = :local
是获胜组合。这是过程中的what I found。
答案 3 :(得分:19)
就我而言(Rails 5),我最终在 /* Start Critical Section */
my_q.size++;
list_add_tail(&msg->node, &my_q.head);
/* End Critical Section */
return 0;
}
app/config/environments/development.rb
就是这样!为了确保正确读取墨尔本,我在终端中运行命令:
config.time_zone = "Melbourne"
config.active_record.default_timezone = :local
墨尔本正在我所在的时区上市!
答案 4 :(得分:9)
如果要将时区全局设置为UTC,可以在Rails 4中执行以下操作:
# Inside config/application.rb
config.time_zone = "UTC"
config.active_record.default_timezone = :utc
请务必重新启动您的应用程序,否则您将无法看到更改。
答案 5 :(得分:3)
在导轨4.2.2上,转到application.rb
并使用config.time_zone='city'
(例如:'伦敦'或布加勒斯特'或'阿姆斯特丹&# 39;等等。)
它应该工作得很好。它对我有用。
答案 6 :(得分:2)
我必须将此块添加到我的environment.rb
文件中,一切都很顺利:)
Rails.application.configure do
config.time_zone = "Pacific Time (US & Canada)"
config.active_record.default_timezone = :local
end
答案 7 :(得分:0)
对于中国用户,只需在下方添加两行config/application.rb
:
config.active_record.default_timezone = :local
config.time_zone = 'Beijing'
答案 8 :(得分:0)
在Ruby on Rails 6.0.1中,转到 config > 区域设置> application.rb 和grego 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的人有所帮助
答案 9 :(得分:-3)
如果您想设置本地时间,请在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'
然后重新启动服务器