0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ruby on rails での日時扱い方

Posted at

目次

①タイムゾーンついて
②タイムゾーンをコンソールで確かめる
③自国の時間で表示する方法

①タイムゾーンついて

タイムゾーンとは、共通の時間を使うエリア一帯のことを指す。

日本で使われている時間は「日本標準時(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'と設定しておけば良いことになる。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?