railsのタイムゾーンは複数あるのをご存知ですか?
いつも混同してしまうので、表で整理しておきました。
Rails内のタイムゾーンまとめ表
パソコン推奨
分類(4種類) | 定義される場所 | デフォルト | 例 | 備考 |
1.rubyプロセスのタイムゾーン | OSのタイムゾーン(/etc/localtime) または 環境変数TZ | Time.now Date.today | ||
2.railsで指定できるタイムゾーン | config.time_zone | UTC | ActiveRecordの日時(created_atなど) Time.current Time.zone.now Time.zone.local Date.current | rails使うならこっち使うのが無難な様子。 |
3.railsで指定できるDBサーバのタイムゾーン(DB読み書き用) | config.active_record.default_timezone :localの場合:rubyプロセスのタイムゾーン :utcの場合:UTC | :utc | DBに書かれている時刻をどのタイムゾーンとして解釈するか。 時刻をDBに書き込むとき、どのタイムゾーンで書き込むか。 | |
4.DBサーバのタイムゾーン | show timezone(postgresの場合) | SELECT now() |
3と4がずれていたらややこしいことになりそう。
参考文献
これをほぼまとめただけ:Railsタイムゾーンまとめ
はるすと
最後まで読んでくださってありがとうございました!
画像提供:Anja🤗#helpinghands #solidarity#stays healthy🙏によるPixabayからの画像
コメント