LoginSignup
7
8

More than 3 years have passed since last update.

Railsアプリで時間を表示したときの「UTC」を消したい(Railsのタイムゾーンの扱い方)

Posted at

プログラミングの勉強日記

2020年8月12日 Progate Lv.226

目標

 Railsアプリで投稿を更新した時間を表示させるようにした。

views/posts/index.html.erb
<%= post.updated_at %>

投稿を更新した日時を表示することができたが、時間の後ろに『UTC』という文字列が入ってしまっている。
『2020-08-08 11:56:59 UTC』

これを消して、以下のように表示させたい!!
『2020-08-08 11:56:59』

方法

 RubyにはTime::strftimeメソッドがあり、これで時刻を好きなフォーマットに変更できる。

views/posts/index.html.erb
 <%= post.updated_at.strftime("%Y-%m-%d %H:%M:%S") %>

これでUTCが消され、以下のように表示されるようになった。
『2020-08-08 11:56:59』

対応する日時 フォーマットの指定子
%Y 年(year)
%m 月(month)
%d 日にち(day)
%H 時間(hour)
%M 分(minutes)
%S 秒(seconds)

なので、このように自由にフォーマットを変えることができる。

views/posts/index.html.erb
 <%# 2020-08-08 11:56 %>
 <%= post.updated_at.strftime("%Y-%m-%d %H:%M") %>

 <%# 2020年 08月 08日 %>
 <%= post.updated_at.strftime("%Y年 %m月 %d日") %>

UTCとは

 UTCは協定世界時のことである。国や地域ごとに時差があり、タイムゾーンと呼ばれる共通の時間を使うエリアの一帯のことを指す。日本で使われている時間は日本標準時(JST)と呼ばれている。
 RailsではデフォルトでUTCが設定されている。

UTCの変更方法

 Railsのタイムゾーンはconfig/application.rbで設定できる。config.time_zoneconfig.active_record.default_zimezoneの2つの方法でタイムゾーンを変更することができる。
 config.time_zoneは、Time.zone.nowやTime.currentといったTimeWithZoneに対する設定で、"Tokyo"などの都市名を設定することでタイムゾーンを変更できる。
 config.active_record.default_zimezoneはデータベースレコードの読み書きに対する設定で、:utc:localのどちらかを設定することができる。:localを使用すると、データベースが動作するサーバーのタイムゾーンが使用される。

config/application.rb
config.time_zone = "Tokyo"
config.active_record.default_timezone = :local

application.rbを変更した後、Railsサーバーを再起動する!!

参考文献

Timeメソッドで出てくるタイムゾーンの UTC とかいう文字を消したい
Railsでタイムゾーンを扱う方法を現役エンジニアが解説【初心者向け】

7
8
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
7
8