UTCからのオフセットが"異常"なタイムゾーンたち

日本は全域がUTC+9のタイムゾーンに属しています。よって上海とは1時間、ロンドンとは9時間、ロサンゼルスとは17時間の時差が発生しています。
日本にいると、UTCとのオフセットや世界の各都市との1時間単位が当たり前のように感じますが、世界にはそうでない地域が結構あります。その辺の ~~辛さ~~　楽しさを知って実装にも反映していただきたく、いくつか紹介します。

概ねこのスライドのリライトです。
[タイムゾーンの基礎教養](https://speakerdeck.com/kumatira/swamp-of-timezone)

# 日本とその周辺の標準時
UTCとGMT、国際原子時や世界時等々それぞれ微妙に異なりつつ参照しあっている似た概念がいくつかありますが、とりあえずここではUTCを基準と考えます。

小学校の社会で習った通り、日本の標準時は兵庫県明石市を通る東経135度を基準としています[^1]。これは世界の標準時の基準となっている協定標準時(UTC)で元になった経度0度と135度ずれています。地球が1周360度自転する時間が24時間なので、15度ずれているば1時間、135度ずれていれば9時間の時差が生まれます。よって日本はUTC+9のタイムゾーンに属していると言えます。
![2.png](https://qiita-image-store.s3.amazonaws.com/0/159912/7ee63bc2-d5cc-400f-682c-6ccda04144f3.png)[^2]

[^1]: 「本初子午線經度計算方及標準時ノ件」という1886年に出された勅令が根拠となっているようです。条文は[ここ](https://ja.wikisource.org/wiki/%E6%9C%AC%E5%88%9D%E5%AD%90%E5%8D%88%E7%B7%9A%E7%B6%93%E5%BA%A6%E8%A8%88%E7%AE%97%E6%96%B9%E5%8F%8A%E6%A8%99%E6%BA%96%E6%99%82%E3%83%8E%E4%BB%B6)で読めます
[^2]: 白地図は[白地図専門店](http://www.freemap.jp/itemFreeDlPage.php?b=world&s=world1)さんよりいただきました。

日本と同様にUTC+9のタイムゾーンに属している地域には韓国やパラオ、東ティモール、ロシアのアムール州などがあります。標準時はその地域の法律などで任意に決められているものなので、その基準となる子午線が地域を通過していなくても構いません。例えば韓国の領土には東経135度は通っていませんが、UTC+9を使用しています。またウラジオストクなどの沿海地方は東経135度が貫いていますが、東経150度を基準とするUTC+10を使用しています。

# 1分単位のオフセット
先述の通り、多くの地域ではUTCに対して1時間単位でオフセットした標準時を使用しています。しかしこの慣例に法らない地域がいくつかあります。その代表例がオーストラリアのアデレードなどで使用されているオーストラリア中部標準時です。この標準時はUTC+9:30を参照しています。

このような例はいくつか見られます。

| 標準時      |オフセット|
|:-----------------|:------------------|
|オーストラリア中部標準時|UTC+9:30|
|ネパール標準時|UTC+5:45|
|インドのムンバイ(1955年まで)|UTC+4:51|

# 1秒単位のオフセット
前項の1分単位のオフセットは現在にも残っているため、比較的有名かと思います。しかし歴史上にはUTCに対し1秒単位でオフセットしたタイムゾーンもありました。その代表例が1916年までアイルランドで使われていたダブリン平均時です。

アイルランドの新聞「The Irish Times」では以下のように言及されています[^3]
>“In Ireland – where the sun, as measured by the Dunsink Observatory, rose 25 minutes and 21 seconds later than at Greenwich – time was officially defined as Dublin Mean Time.”　

この通りアイルランドではUTC-0:25:21が使用されていました。
同様の例には以下があります。現在使用されているタイムゾーンはありませんが、歴史的イベントを参照する際などは考慮に入れる必要があります。

| 標準時      |オフセット|
|:-----------------|:------------------|
|ダブリン平均時(1916年まで)|UTC-0:25:21|
|モンロビア標準時(リベリア)(1972年まで)|UTC-0:44:30|
|ヤンゴン標準時(ミャンマー)(1942年まで)|UTC-6:24:47|

世界各地域の標準時が収録され、UNIXなどで利用されている「tz database」でもこの通り対応されているため、実装の中でOSの機能を利用すればこのタイムゾーンも対応することができます。
tz databaseは[ここ](https://www.iana.org/time-zones)などから見ることができます。

```plaintext:europe
# Zone	NAME		GMTOFF	RULES	FORMAT	[UNTIL]
Zone	Europe/Dublin	-0:25:00 -	LMT	1880 Aug  2
			-0:25:21 -	DMT	1916 May 21  2:00s
			-0:25:21 1:00	IST	1916 Oct  1  2:00s
			 0:00	GB-Eire	%s	1921 Dec  6 # independence
			 0:00	GB-Eire	GMT/IST	1940 Feb 25  2:00s
			 0:00	1:00	IST	1946 Oct  6  2:00s
			 0:00	-	GMT	1947 Mar 16  2:00s
			 0:00	1:00	IST	1947 Nov  2  2:00s
			 0:00	-	GMT	1948 Apr 18  2:00s
			 0:00	GB-Eire	GMT/IST	1968 Oct 27
```



[^3]: [Dublin lost its time zone –and 25 minutes– after 1916 Rising](https://www.irishtimes.com/news/politics/dublin-lost-its-time-zone-and-25-minutes-after-1916-rising-1.1977411)

# 1秒未満のオフセット
歴史には例外がつきもので、UTCから1秒未満のオフセットを定めたタイムゾーンも存在しました。こちらも前項と同様に現在利用されているものはありませんが、天文学に関係する実装をする場合などは考慮する必要がありそうです。

以下のような例があります

| 標準時      |オフセット|
|:-----------------|:------------------|
|アルゼンチン標準時	(1920年まで)|UTC-4:16:48.25|
|マドラス常用時(インド)(1972年まで)|UTC+5:20:57.3|
|アムステルダム標準時(オランダ)(1937年まで)|UTC+0:19:32.13|

先述のtz databaseでも議論はされていますが、対応されていません。

# サマータイム時のオフセット
最後はサマータイムを実施する際のオフセットについてです。
サマータイムは夏を中心とする時期に太陽が出ている時間帯を有効に利用する目的で導入されるものであり、定められた時期に標準時を早めるものです。アメリカでは「daylight saving time(DST)」とも呼ばれています。欧米を中心に導入されていて、かつては日本でも占領期の1948年から51年にかけて導入されていました。
また今年の夏にはオリンピックに向けて再導入するかという話題が盛り上がりました。

サマータイムを実施する際、標準時を早めるのは1時間が一般的ですが、以下の極めて限られた地域ではそれ以外の長さでオフセットされます。

| 標準時      |オフセット| 直近の実施期間
|:-----------------|:------------------|:-----------------------|
|オーストラリアのロード・ハウ島|30分| 2018年10月7日→2019年4月7日 |
|南極のトロル基地(ノルウェー)|2時間| 2019年3月31日→2019年10月27日 |

この夏に話題になった日本でのサマータイム再導入も2時間のオフセットが議論されていたようです:innocent: [^4]


---
ということで、一般的でないオフセットを行なっているタイムゾーンについてまとめました。実装についても機会があれば紹介します。

[^4]: 朝日新聞デジタル「東京五輪「サマータイム導入検討を」　組織委、政府に」(https://www.asahi.com/articles/ASL7W61XZL7WUTQP01N.html)