LoginSignup
82
86

More than 3 years have passed since last update.

【Rails】created_at、updated_atを日本時間に変更して良い感じに表示する方法

Last updated at Posted at 2019-09-28

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を開くと、以下のようなコードが記述されています。

image.png

このファイルに、以下のコードを記述してください。

config/application.rb
config.time_zone = 'Tokyo'

image.png

ステップ2:サーバーを再起動させる

そして、rails sでサーバーを再起動させます。

そうすると、以下のように日本時間で表示されるはずです。

image.png

ただ、これだと読みにくいので、さらにコードを記述していきます。

より見やすいように修正する

config/initializers/time_formats.rbというファイルを作ってください。

そして作ったファイルに、以下のコードを記述しましょう。

config/initializers/time_formats.rb
Time::DATE_FORMATS[:datetime_jp] = '%Y年 %m月 %d日 %H時 %M分'

コードを書いたら、サーバーを再起動します。

ステップ4:viewの修正をする

次にやるのがviewファイルの修正。

to_sメソッドを呼び出して、引数にフォーマット名を指定。

ちなみにto_sとは配列を文字列に変換するメソッドで、配列の各要素を文字列に変換して連結した文字列を返します。

以下のコードを日本時間へ修正したい箇所に追加します。

【before】

任意のview.html.erb
<%= xxx.created_at %>
<%= xxx.updated_at %>

【after】

任意のview.html.erb
<%= xxx.created_at.to_s(:datetime_jp) %>
<%= xxx.updated_at.to_s(:datetime_jp) %>

そうすると、以下のようにいい感じに日本時間が表示されるようになります。

image.png

まとめ

日本時間の表示は、設定としてフォーマットを定義しておくと便利です。

このように設定しておけば、楽にタイムゾーンを日本時間へすることができます。

82
86
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
82
86