LoginSignup
2
1

More than 3 years have passed since last update.

Railsで表示時間を日本時間に設定する方法

Last updated at Posted at 2020-07-12

やりたいこと

投稿時間を国際標準時間から日本時間の表示に変更したい

変更前(GMT標準時間)▼
Screenshot from Gyazo
変更後(日本時間)▼
Screenshot from Gyazo

設定の方法

  • 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>
2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1