2 ポイント 投稿者 GN⁺ 2024-10-31 | 1件のコメント | WhatsAppで共有
  • タイムゾーンは複雑だが、コンピュータがこれを実装しなければならないため、奇妙さは有限の範囲に収まる。
    • Asia/Kathmandu は UTC から見て変則的なオフセットを持つ。
    • Africa/Casablanca はタイムゾーンモデルにうまく当てはまらないため、ハードコードされている。
    • America/Nuuk は -01:00 からサマータイムを開始する。
    • Africa/CairoAmerica/Santiago は 24時(0時ではない)にサマータイムを開始する。
    • Australia/Lord_Howe は最も奇妙なサマータイム規則を持つ。

PGXIIREAM: 教皇グレゴリウス13世がすべてを支配している

  • 世界の大半はグレゴリオ暦に基づく時間システムを使っている。
  • グレゴリオ暦は、年間を通して太陽の位置を一定に保つのに非常に有用である。
  • UTC はグレゴリオ暦を現代的に公式化したものであり、世界中がこれを基準に時刻を設定している。

うるう秒は重要ではない

  • 地球の自転は遅くなっており、それを補正するためにうるう秒が追加される。
  • 多くのプログラミング言語では61秒を表現しないため、うるう秒は無視してよい。
  • クラウドプロバイダは、うるう秒の間に時計をゆっくり進めることで問題を解決している。

奇妙なタイムゾーン

Asia/Kathmandu は変則的なオフセットを持つ

  • ネパールは UTC より 5時間45分進んでいる。
  • コンピュータは IANA タイムゾーンデータベースを通じてこの情報を知ることができる。

PDTCET のような文字列には意味がない

  • タイムゾーン識別子は曖昧なことがあり、多くのタイムゾーンが同じ識別子を共有している。

サマータイムのあるタイムゾーンはどのように表現されるのか?

  • サマータイムの切り替え規則は複雑であり、コンピュータはそれに基づいて現地時刻を計算する。

Africa/CasablancaAsia/Gaza は月に従うが、タイムゾーンは太陽に従う

  • モロッコとガザはラマダンに合わせてサマータイムを調整しており、これはハードコードされている。

America/Nuuk は -1時にサマータイムへ切り替わる

  • グリーンランドはヨーロッパと同じ時点でサマータイムを開始するが、現地時間では -1時に始まる。

America/SantiagoAfrica/Cairo は 24時に切り替わる

  • これらのタイムゾーンは 24時にサマータイムへ切り替わり、それは翌日にまたがることを意味する。

Australia/Lord_Howe は最も奇妙なサマータイム切り替えを持つ

  • ロード・ハウ島では30分のサマータイム切り替えがある。

GN⁺ のまとめ

  • タイムゾーンは複雑だが、コンピュータがこれを実装しなければならないため、奇妙さは有限の範囲に収まる。
  • Australia/Lord_Howe は30分のサマータイム切り替えを持つ、最も独特なタイムゾーンである。
  • この記事はタイムゾーンの複雑さを理解するのに役立ち、プログラマにとって興味深い内容になりうる。
  • 類似した機能を持つプロジェクトとして tzdb がある。

1件のコメント

 
GN⁺ 2024-10-31
Hacker Newsのコメント
  • tzデータベースはビッグバン以前のタイムゾーン遷移を計算しない。ビッグバン以前のタイムスタンプは物理的に疑わしい

    • 例えば、Glibはブラジルの1913年の規則を今でも適用して、サンパウロのタイムスタンプを計算する
    • ビッグバン以前のうるう秒も認められない
  • Africa/Addis_Ababa タイムゾーンはエチオピアでは誰も従っていない

    • 現地の人々は時刻を6時間ずらして使う
    • AMの周期は夜明けに始まり、PMの周期は夕暮れに始まる
  • プログラミング言語が61秒の分を表現できないというのは事実ではない

    • Rakuはうるう秒をサポートしている
    • Perl 5の DateTime.pm もうるう秒をサポートしており、これは複雑さを増す
    • うるう秒はほとんど使われず、コードの複雑さを増やす
  • Asia/Jerusalem タイムゾーンは宗教と国家の問題のため複雑である

    • 宗教的理由により、夏時間は毎年交渉によって決まる
    • Rosh HaShanah に夏時間が終わらないようにする例外がある
  • アメリカの住所を基に現地時刻を見つける関数を書いた経験

    • 州とタイムゾーンを静的に対応付けるのは、エッジケースのため難しい
    • ZIPコードとUTCオフセットを対応付けたCSVを購入して使った
    • アメリカの海外領土と軍事基地のため、複雑なタイムゾーンが存在する
  • パレスチナのタイムゾーンは固定日なしで、毎年政府が夏時間の開始と終了を発表する

    • 1週間にも満たない告知のため、さまざまな問題が起こり得る
  • タイムゾーンソフトウェアの柔軟性についての興味深い読み物

    • 夏時間の方針は60分調整に限られない可能性がある
    • 国が年間を通して継続的に変化するオフセットを持つこともあり得る
  • 政府が夏時間を廃止し、翌年にタイムゾーンを移動すると混乱が生じる

    • Androidアプリ開発時、システムイメージに組み込まれたタイムゾーンデータベースのため問題が起きた
  • tzデータベースはUTCとの差分を記録する diff の diff である

    • 更新が行われ、changelog は git に保存される
    • diff^4 と表現できる
  • 30分の夏時間差は最も奇妙なタイムゾーンではない

    • Antarctica/Troll、モロッコ、ガザのタイムゾーンには、システムが表現できない規則がある
    • うるう秒はプログラマーにとって有用ではなく、ほとんど無視される