#はじめに
データベースのcreated_atカラムを何も設定しないまま出力するとデフォルトで協定標準時(UTC)が出力されてしまいます。
UTCは日本時間の9時間前の時間になります。
Ruby on railsでcreated_atに保存されている時間を、日本時間で表示できるようにするための方法をまとめてみました。
#localeを設定する。
localeとは、言語、国・地域の設定のことを言います。
まず、config/application.rbを以下のように編集します。
config/application.rb
module プロジェクト名
class Application < Rails::Application
config.load_defaults 5.2
config.assets.initialize_on_precompile = false
#・・・
#以下の1行を追記
config.i18n.default_locale = :ja
end
end
これは、localeのデフォルトを日本に設定しています。
#created_atの出力される表記を設定する。
config/locales/ja.ymlを作成し、以下のように編集します。
config/locales/ja.yml
ja:
time:
formats:
default: '%Y/%m/%d %H:%M'
これにより、created_atカラムを出力するとデフォルトで日本時間で 2021/07/05 20:20 のように出力されるようになります。
ただし、出力する際にはlメソッドを使う必要があります。lメソッドを使用した場合としない場合を比較してみます。
以下は例です。
~.html.erb
<%= @post.created_at >
#出力画面:2021-07-05 14:31:51 +0900
<%= l @post.created_at %>
#出力画面:2021/07/05 20:20
このように l メソッドを使用することで、設定した表記で出力することができました。