日時のフォーマットについて

問題

世界標準で日時が表示される

解決法

  1. タイムゾーンを日本時間に設定
config/application.rb
module TimeFormatSandbox
  class Application < Rails::Application
    # ...

    # タイムゾーンを日本時間に設定
    config.time_zone = 'Asia/Tokyo'
  end
end

上記の記述で日時が日本時間になる

  1. フォーマットを変更する

strftimeメソッドで変更可能だが、DRYではなコードになってしまうので、lメソッドを使って実装する

# app/views/boards/_board.html.erb

<%= l board.created_at, format: :long %>

ロケールを設定

config/application.rb
module TimeFormatSandbox
  class Application < Rails::Application
    # ...

    # デフォルトのロケールを日本(ja)に設定
    config.i18n.default_locale = :ja
  end
end
ja.yml
time:
    formats:
        long: "%Y年%m月%d日 %H時%M分"

すると以下のように表示されるようになる f:id:uuuuuDi_3712:20220116125810p:plain

railsの基準時刻

DB側の時刻設定と、アプリ側の時刻設定が異なる場合、別々の時間表示で保存されてしまうのでアプリケーション作成の段階でRails側の標準時刻と、DB側の標準時刻を合わせておく