LoginSignup
0
0

More than 1 year has passed since last update.

Ruby on railsでcreated_atカラムに保存されている時間を日本時間で出力する方法

Last updated at Posted at 2021-07-05

はじめに

データベースの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 メソッドを使用することで、設定した表記で出力することができました。

参考記事

【初心者向け・動画付き】Railsで日時をフォーマットするときはstrftimeよりも、lメソッドを使おう

0
0
0

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
0
0