Ruby on RailsでWebサービスを作っていたら、日本時間への設定変更でつまずいてしまいました。
2019-07-09 10:00 + 0900みたいな表示になってしまう。
+0900じゃなくて、2019年07月09日 19時みたいな感じにしたい。
そこでこの記事では
- タイムゾーンを日本時間に変更する方法
- 良い感じに日本時間を表示する方法
についてまとめてみました。
##【Rails】created_at、updated_atを日本時間に設定する方法
以下の4ステップでタイムゾーンを変更できます。
###ステップ1:config/application.rbにタイムゾーンの設定を追加
config/application.rbを開くと、以下のようなコードが記述されています。
このファイルに、以下のコードを記述してください。
config.time_zone = 'Tokyo'
###ステップ2:サーバーを再起動させる
そして、rails sでサーバーを再起動させます。
そうすると、以下のように日本時間で表示されるはずです。
ただ、これだと読みにくいので、さらにコードを記述していきます。
###より見やすいように修正する
config/initializers/time_formats.rbというファイルを作ってください。
そして作ったファイルに、以下のコードを記述しましょう。
Time::DATE_FORMATS[:datetime_jp] = '%Y年 %m月 %d日 %H時 %M分'
コードを書いたら、サーバーを再起動します。
###ステップ4:viewの修正をする
次にやるのがviewファイルの修正。
to_sメソッドを呼び出して、引数にフォーマット名を指定。
ちなみにto_sとは配列を文字列に変換するメソッドで、配列の各要素を文字列に変換して連結した文字列を返します。
以下のコードを日本時間へ修正したい箇所に追加します。
【before】
<%= xxx.created_at %>
<%= xxx.updated_at %>
【after】
<%= xxx.created_at.to_s(:datetime_jp) %>
<%= xxx.updated_at.to_s(:datetime_jp) %>
そうすると、以下のようにいい感じに日本時間が表示されるようになります。
##まとめ
日本時間の表示は、設定としてフォーマットを定義しておくと便利です。
このように設定しておけば、楽にタイムゾーンを日本時間へすることができます。