[Rails]created_atの表示を日本時間にする方法

2023/10/13に公開

やること

created_atをそのままビューに表示すると、「2023-10-13 19:45:11 +0900」のように表示されてしまいます。今回は日本向けのアプリケーションなので、タイムゾーンをデフォルトのUTCからJSTに変更し、フォーマットも見やすいように変更します。

対応前の表示はこちら👇

UTCをJSTに変更

まずはタイムゾーンを変更します。
config/application.rbを開き、config.time_zone = 'Tokyo'という記述を追加します。

class Application < Rails::Application
  config.time_zone = 'Tokyo'
end

その後サーバーを再起動すると、タイムゾーンが日本時間に変更されます。

年月日の表示フォーマットを変更する

今回はYYYY/MM/DDの形にフォーマットを変更します。

config/initializers配下に「time_formats.rb」というファイルを作成し、その中に以下の記述をします。

Time::DATE_FORMATS[:datetime_jp] = '%Y/%m/%d'

そのサーバーを再起動します。
次にビューの修正です。

ビューで<%= q.created_at %>と表示していた箇所を、以下のように変更します。

<%= q.created_at.to_s(:datetime_jp) %>

この記述によって「time_formats.rb」に記述したフォーマットを読み込み、YYYY/MM/DDの形で表示されるようになります。

対応後の表示はこちら👇

参考記事

https://qiita.com/tomo_k09/items/e4f19947d35890500492
https://qiita.com/mmaumtjgj/items/0bbc38f5508f5221adb2

Discussion