やりたいこと
投稿時間を国際標準時間から日本時間の表示に変更したい
設定の方法
-
config/application.rb
内にconfig.time_zone = 'Tokyo'
の記述を追加
application.rb
# ↑これ以前のコードは割愛
module App
class Application < Rails::Application
config.time_zone = 'Tokyo'
end
end
- サーバーが立ち上がっている場合は一度シャットアウトして再度立ち上げ直す
※dockerを起動している場合は、下記でコンテナを立ち上げ直す(ターミナルで下記コマンドを実行)
docker-compose stop
docker-compose up -d
これで日本時間で表示されるが、フォーマットを別途変更する必要あり
-
strftimeメソッド
を使って、表示フォーマットを変えたい箇所にメソッドを当てる
sample.html.erb
# 下記はサンプル
<td><%= @tweet.created_at.strftime('%Y年%m月%d日 %H時%M分') %></td>
変換のメソッドを定義する方法
やること:Initializeにフォーマット変換を定義する
-
config/initializers配下
にtime_formats.rb
というファイルを作成する -
Time::DATE_FORMATS[:datetime_jp] = '%Y年%m月%d日 %H時%M分'
と記述する
time_formats.rb
Time::DATE_FORMATS[:datetime_jp] = '%Y年%m月%d日 %H時%M分'
※ [:datetime_jp] は任意の命名でOK
※ '%Y年%m月%d日 %H時%M分' には変換したいフォーマットを記述する
- 使いたい箇所(viewファイル内)で .to_s(:datetime_jp]) と記述して使う
sample.html.erb
# 下記はサンプル
<td><%= @tweet.created_at.to_s(:datetime_jp) %></td>