タイムゾーンについて考察

JISで表示されている日時を日本時間に直したい表示がありました。
そこで安易にrails全体の設定を修正しようとしてしまったのですが、色々考慮する必要があると気づいたのでそのことについて書いておこうと思います。

 

最初の方法

config/application.rbで以下のように設定を追加しようとしておりました。
config.time_zone = 'Tokyo'
config.active_record.default_timezone = :local

しかしこれだとアプリ全体への影響が出るし、config.active_record.default_timezoneだとDBに読み書きする時刻にまで影響が出てしまうので良くない方法でした。
(場合によってはいいのかもしれませんが、今回行いたい修正では良くないという意味)

 

修正後の方法

以下の1,2の方法を考えたのち、他の部分への影響がなさそうで安心 という点を重視して2の方法を選択してみました。

 

方法1

config.time_zone = 'Tokyo' のみapplication.rbで設定する。
(config.active_record.default_timezonはDBへ保存する時にも影響が出るため使わない)

・表示系のみ日本時間になる

Rails全体への影響はでる

 

方法2

viewで以下のようにして変換する。

<%= @hoge.cleated_at.in_time_zone('Tokyo') %>

 

・影響範囲はその部分の表示のみ
・他の部分への影響はなさそうなので安心

 

感想その他

以前の@neko314_さんの銀座Railsの発表をお聞きしてから「自分も何か機能を実装する際、複数ある実装方法の中から理由を持って実装方法を選ぶようにしていきたい!!」と思っておりました。
今日、少しタイムゾーンの変更方法をどのようにするかにおいて、それを実行できたのでよかったです!
これからも続けていこうと思います!


参考文献

https://marketing-web.hatenablog.com/entry/ror_uto_to_jst
https://qiita.com/joker1007/items/2c277cca5bd50e4cce5e
http://geekday.hatenablog.com/entry/2017/04/27/015440
https://railsguides.jp/configuring.html