#プログラミングの勉強日記
2020年8月12日 Progate Lv.226
#目標
Railsアプリで投稿を更新した時間を表示させるようにした。
<%= post.updated_at %>
投稿を更新した日時を表示することができたが、時間の後ろに『UTC』という文字列が入ってしまっている。
『2020-08-08 11:56:59 UTC』
これを消して、以下のように表示させたい!!
『2020-08-08 11:56:59』
#方法
RubyにはTime::strftimeメソッドがあり、これで時刻を好きなフォーマットに変更できる。
<%= 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) |
なので、このように自由にフォーマットを変えることができる。
<%# 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_zone
とconfig.active_record.default_zimezone
の2つの方法でタイムゾーンを変更することができる。
config.time_zoneは、Time.zone.nowやTime.currentといったTimeWithZoneに対する設定で、"Tokyo"などの都市名を設定することでタイムゾーンを変更できる。
config.active_record.default_zimezoneはデータベースレコードの読み書きに対する設定で、:utc
と :local
のどちらかを設定することができる。:local
を使用すると、データベースが動作するサーバーのタイムゾーンが使用される。
config.time_zone = "Tokyo"
config.active_record.default_timezone = :local
application.rbを変更した後、Railsサーバーを再起動する!!
#参考文献
Timeメソッドで出てくるタイムゾーンの UTC とかいう文字を消したい
Railsでタイムゾーンを扱う方法を現役エンジニアが解説【初心者向け】