日時のフォーマットについて
問題
世界標準で日時が表示される
解決法
- タイムゾーンを日本時間に設定
config/application.rb module TimeFormatSandbox class Application < Rails::Application # ... # タイムゾーンを日本時間に設定 config.time_zone = 'Asia/Tokyo' end end
上記の記述で日時が日本時間になる
- フォーマットを変更する
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分"
すると以下のように表示されるようになる
railsの基準時刻
DB側の時刻設定と、アプリ側の時刻設定が異なる場合、別々の時間表示で保存されてしまうのでアプリケーション作成の段階でRails側の標準時刻と、DB側の標準時刻を合わせておく