目次
①タイムゾーンついて
②タイムゾーンをコンソールで確かめる
③自国の時間で表示する方法
①タイムゾーンついて
タイムゾーンとは、共通の時間を使うエリア一帯のことを指す。
日本で使われている時間は「日本標準時(JST)」と呼ばれており、世界の基準時刻である「グリニッジ標準時(GMT)」や「協定世界時(UTC)」と比較して+9時間の時差があるため、UTC+9やUTC+09:00などと表記される。
②タイムゾーンをコンソールで確かめる
ここで実際にタイムゾーンをコンソール内で実感してみる。
irb(main):001:0> Time.zone
=> #<ActiveSupport::TimeZone:0x00007ff51de20800 @name="UTC", @utc_offset=nil, @tzinfo=#<TZInfo::DataTimezone: Etc/UTC>>
上記のようにTime.zoneと打ち込むと、ActiveSupport::TimeZoneオブジェクトが返ってくる。
これはRailsが日時を扱う際に自動的に利用されるクラスのこと。
そしてタイムゾーンはUTCであることを示している。
次にTime.zone.nowで現在の時間を確かめてみる。
irb(main):002:0> Time.zone.now
=> Fri, 09 Apr 2021 04:25:40 UTC +00:00
この時間はUTCを基準としているので日本時間でが9時間ほど早い時刻が表示されている。
irb(main):003:0> Time.zone.now.class
=> ActiveSupport::TimeWithZone
ここでクラスのオブジェクトを確認する。
ActiveSupport::TimeZoneクラスのオブジェクトだということが分かる。これはTimeクラスに対して実行しているのに上記のように返されるのは、railsが自動的にクラスを変換していることによるもの。
③railsで自国の時間で表示する方法
次にTime.zoneに"Asia/Tokyo"を代入すると日本の時刻になる。
irb(main):004:0> Time.zone = "Asia/Tokyo"
=> "Asia/Tokyo"
日本の時刻になっているかを確かめるには先ほどのTime.zone.nowを入力してみると
irb(main):005:0> Time.zone.now
=> Fri, 09 Apr 2021 13:27:01 JST +09:00
時刻が変わり、そしてUTCからJSTに変わっていることがわかる。
では、railsでは日本の時刻にするにはどうするのか?
config/application.rbファイル内で、config.time_zoneを"Asia/Tokyo"にすることで日本時刻になる。
日本で利用するアプリであれば、
config.time_zone = 'Asia/Tokyo'と設定しておけば良いことになる。