📆
Rails 投稿日時表示方法
なぜ必要?
情報の新鮮度がわかるようにするため。
実装方法①
投稿日時を表示する箇所が少ない場合はstrftime
メソッドを使用する方法でもok。
<%= recipe.created_at.strftime('%Y/%m/%d %H:%M:%S') %>
%Y/%m/%d
→(例)2023/08/01
%H:%M:%S
→(例)12:20:45
実装方法②(推奨)
lメソッドでDRYに書式を指定する方法。
<%= l recipe.created_at %>
しかし、これだけでは日本時間(JST)ではなく、世界標準時(UTC)で表示されてしまう。
そこで以下のコードを入力する。
config/application.rb
module TimeFormatSandbox
class Application < Rails::Application
# ...
# タイムゾーンを日本時間に設定
config.time_zone = 'Asia/Tokyo'
# デフォルトのロケールを日本(ja)に設定
config.i18n.default_locale = :ja
end
end
config/locales/ja.yml
を作成する。
config/locales/ja.yml
ja:
time:
formats:
default: "%Y/%m/%d %H:%M:%S"
応用編
08/01 12:00
というように、必要なデータだけを表示させたいときは
format
オプションを使用する
<%= l recipe.created_at, format: :short %>
config/locales/ja.yml
ja:
time:
formats:
default: "%Y/%m/%d %H:%M:%S"
short: "%m/%d %H:%M"
参考文献
Discussion