5
1

【Rails】TimeZoneを使えば中学地理の時差計算は満点

Last updated at Posted at 2023-10-02

はじめに

先日Time.currentを使う機会があり、これを出力してみると以下のような結果が出ました。

Sun, 24 Sep 2023 23:27:44 JST +09:00

JSTとは日本標準時(Japan Standard Time)
+09:00とは世界標準時から+9時間の時差がある という意味です。

ふと、こんなことを考えました。

「これ、日本以外の時差も見れんじゃね?」

2つの方法があるのでハワイの時差を例に出して紹介します。

方法1                      config/application.rbで          config.time_zone = '○○'を変更する

手順は以下の通りです。

手順1

config/application.rbconfig.time_zone = '○○'を特定の地域名に変更する

config/application.rb
config.time_zone = 'Hawaii'

手順2

ppTime.currentを出力する

pp Time.current

-> Sun, 24 Sep 2023 05:32:51 HST -10:00

HST(ハワイ標準時) - 10:00 と表示されていますね。
これは世界標準時より-10時間の時差があることを示しています。

日本は+9時間の時差なので、「ハワイと日本の時差は19時間で、日本の方が時間が進んでいる」ということがわかりますね。

方法2   ActiveSupport::TimeZoneを利用する

手順は以下の通りです。

手順1

下記のコードを書く

ActiveSupport::TimeZone.all.each {|tz| 
      pp tz.to_s
}

結果

"(GMT-12:00) International Date Line West"
"(GMT-11:00) American Samoa"
"(GMT-11:00) Midway Island"
"(GMT-10:00) Hawaii"
・・・
# 各都市の名称と時差
・・・
"(GMT+13:00) Nuku'alofa"
"(GMT+13:00) Samoa"
"(GMT+13:00) Tokelau Is."

手順2

cmd + F で"Hawaii"と検索

結果

"(GMT-10:00) Hawaii"

GMT(世界標準時)-10:00と表示されていますね。
これは世界標準時より-10時間の時差があることを示しています。
方法1と同じ結果が取得できましたね。

ここからはハワイと日本の時差を求めていきます。

cmd + F で"Hawaii"と検索すると以下の結果が返ってきます。

"(GMT+09:00) Tokyo"

日本は(GMT+09:00)と表示されているので世界標準時より+9時間の時差があります。
ハワイと日本の時差は、下のイメージで簡単に計算できます。

"Hawaii" <---- GMT ----> "Tokyo"
                  -10時間        +9時間

ハワイと日本の時差は19時間と求められましたね。
そして、"Tokyo"の方が"Hawaii"より右にあるので、日本の方が時間が進んでいると理解できますね。

ちなみにこの方法だと151の地域の時差を一括取得できます。 便利ですね
1 "(GMT-12:00) International Date Line West"
2 "(GMT-11:00) American Samoa"
3 "(GMT-11:00) Midway Island"
4 "(GMT-10:00) Hawaii"
・・・
# 各都市の名称と時差
・・・
149 "(GMT+13:00) Nuku'alofa"
150 "(GMT+13:00) Samoa"
151 "(GMT+13:00) Tokelau Is."

まとめ

方法1

メリット: 時差だけでなく現在時刻も表示してくれる

デメリット: config/application.rbを修正するのが面倒

方法2

メリット: 方法1と違い、config/application.rbをいじる必要がない
      151の地域の時差が一覧で表示される

デメリット:現在時刻が表示されない

最後に問題

上記の方法を使って
ロシアのヤクーツク("Yakutsk")という地域と日本("Tokyo")
の時差を求めてみましょう。

求められた人には
離れていても同じ時間に生きていることの神秘さが伝わったと思います。

記事は以上です。では、さようなら

5
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
5
1