【Rails】日時フォーマット(lメソッド)
はじめに
Viewにcreated_atのような日付を出力すると、
Tue, 30 Jul 2020 00:12:12 +0000
のような日本人には見慣れない表示がされます。この記事ではこれを日本人が見やすい表示に変更する流れを紹介します。
タイムゾーンを日本時間にする
まず、タイムゾーンを日本時間にしましょう。
config/application.rb
module Normal class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. config.load_defaults 5.2 # アプリケーション側のタイムゾーン config.time_zone = 'Tokyo' # DB側から受け取った時刻をどのタイムゾーンとして解釈するか config.active_record.default_timezone = :local end end
これで画面に表示される日時が日本時間になります。
Tue, 30 Jul 2020 09:12:12 +0900
日本人が読みやすいフォーマットにする
lメソッドをしようするのですが、そのまえに準備をします。 先ほどのapplication.rbに以下を追記します。
# デフォルトの言語を日本語に変更 # デフォルトは:enになっている config.i18n.default_locale = :ja # localeファイルの読み込み設定 config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb,yml}')]
続いて、 config/locales/ja.ymlというファイルを作成し、以下の記述をします。
ja: time: formats: default: "%Y/%m/%d %H:%M:%S"
これで準備OKです。 View側で
<%= l user.created_at %>
と記述してみましょう。
2020/11/30 09:12:12
とわかりやすい表示になっているはずです。
応用編
他にも、ja.ymlの指定を増やせばいろいろな形のフォーマットを実現できます。
ja.yml
ja: time: formats: default: "%Y/%m/%d %H:%M:%S" short: "%m/%d %H:%M"
View側
<%= l user.created_at, format: :short %>
11/30 09:12
このように、フォーマットを作ることができます。