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でレコードが作成された場合でも、datetime
はUTC形式で保存されているように見えます。
上記のコメントでは、彼らは言う
...そしてActive Recordをこのゾーンに自動変換します...
どうすればそれができますか?
また、私はこれをherokuにも展開し、設定を引き継ぐようにします
次をapplication.rb
に追加する
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タイムゾーンとhaveActive Recordこのタイムゾーンでの時間の保存、使用
# application.rb
config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = :local
警告:データベースに時間を非UTC形式で保存する前に、本当に2回考える必要があります。
注
application.rb
を変更した後、Railsサーバーを再起動することを忘れないでください。
config.active_record.default_timezone
は2つの値しか受け取れないことに注意してください
config.time_zone
で定義されたタイムゾーンに変換)利用可能なすべてのタイムゾーンを見つける方法は次のとおりです
rake time:zones:all
私は多くの苦悩の末、ディーン・ペリーと同じ結論に達しました。 config.time_zone = 'Adelaide'
とconfig.active_record.default_timezone = :local
が勝ちの組み合わせでした。プロセス中の 私が見つけたもの です。
私の場合(レール5)、app/config/environments/development.rb
にこれらの2行を追加しました
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
必ずアプリケーションを再起動してください。そうしないと、変更が表示されません。
Rails 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
Rails.application.initialize!
中国のユーザーの場合、以下の2行をconfig/application.rb
に追加するだけです:
config.active_record.default_timezone = :local
config.time_zone = 'Beijing'