Rails のタイムゾーンについて
こんにちは、ぐっちと申します。
今回は応用カリキュラムで学んだ事を書きたいと思います。
タイトルにもある通り、タイムゾーンの話です。
・デフォルトでは UTC
コードレビューをしてもらった際に、コメントで「メッセージの投稿時間が、日本時間で表示されていません。」と帰ってきた。
その時の私は、日本時間で表示されていない?日本時間表示ってなんだ?何時何分何秒って表示しろってことか? と考えて
↓ こんなコードを修正しようと思い、strftime メソッドについて調べました。
= message.created_at.strftime("%Y/%m/%d %H:%M")
因みにこのコードだと、2019/07/10 12:00 という感じの表示になっています。
そしてフォーマットの一覧を見ているときにふと気になったものが、%Z(タイムゾーンを表示する)でした。
そこでやっと、ん?タイムゾーンって・・・となり早速
= message.created_at.strftime("%Y/%m/%d %H:%M %Z")
にしてやってみると、バッチリ 2019/7/10 12:00 UTC と表示されて9時間ずれていました。
それまで表示の仕方ばかりに気を取られていて、時間がずれている事など微塵も疑問に思わなかったのです。
という事で、次はRails タイムゾーンで検索して、config/application.rb に
config.active_record.default_timezone = :local
config.time_zone = 'Tokyo'
を追加して、データベース への保存時間と表示をJST(日本時間)に修正しました。
今まで何故気がつかなかったのか全くわかりませんが、また一つ勉強になった出来事でした。
ここまで読んでくださり、ありがとうございました。
ツイッターで日々の学習をつぶやいています(@Yamaguc45844169)