📆

Rails 投稿日時表示方法

2023/08/03に公開

なぜ必要?

情報の新鮮度がわかるようにするため。

実装方法①

投稿日時を表示する箇所が少ない場合は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"

参考文献

https://qiita.com/jnchito/items/831654253fb8a958ec25

Discussion