2 ポイント 投稿者 GN⁺ 2024-12-27 | 1件のコメント | WhatsAppで共有
  • エポック以降の秒

    • POSIX時間、またはUnix時間は、1970年1月1日 00:00:00以降の秒を意味すると広く考えられている。しかし、これは正確ではない。たとえば、2024年12月25日 18:54:53 UTCのPOSIX時間は1735152686であり、実際に経過した1735152715秒より29秒少ない。

    • POSIX時間はIEEE 1003.1で協定世界時(UTC)から導出される。標準は毎日が正確に86,400秒であると仮定している。しかし実際には、1日の長さは86,400秒ではなく、時間の経過とともに変化する。これを調整するため、天文学者は定期的にUTCにうるう秒を追加する。

  • 考古学

    • IEEE 1003の付録Bには、うるう秒についての興味深い議論が含まれている。標準が発行された当時、1970年1月1日以降に14回のうるう秒が追加されていた。これらのうるう秒は、時間差を簡単に計算するために無視されている。

    • ほとんどのシステムは、時刻を継続的に増加する値として扱う。しかし、ほとんどのシステムはうるう秒を追跡せず、標準時の参照と同期していない。したがって、エポック以降の秒が参照時刻とエポックの間の秒数を正確に表さなければならないという要件は不適切である。

    • エポック以降の秒の一貫した解釈は、特定の種類の分散アプリケーションにとって重要になる可能性がある。うるう秒の累積は予測できず、エポック以降のうるう秒の数は今後増える可能性がある。

  • 代わりにすべきこと

    • 1台のコンピューター上で2つのイベント間の継続時間を計算するには、CLOCK_MONOTONICを使うべきである。他のシステムとPOSIX時間をやり取りする必要がないなら、TAI、GPS、またはLORANを使うことができる。

    • POSIXタイムスタンプシステムとのおおまかな整合が必要なら、うるう秒をより長い時間窓にわたって分散させることができる。qntmt-a-iのようなライブラリは、POSIXとTAIの間の変換をサポートしている。

    • うるう秒を廃止しようとする取り組みが進んでおり、2035年までの完了が期待されている。これには、「1日は86,400秒」という仮定を使うあらゆるものに対して変換テーブルを構築する追加作業が必要になるが、2つの時刻の間の秒数を問うことはより単純になるだろう。少なくとも2035年以降の時刻については。

1件のコメント

 
GN⁺ 2024-12-27
Hacker Newsのコメント
  • 『A Deepness in the Sky』というSF小説を読んだ。本の中で、エポック以降の秒への言及が興味深かった

    • Qeng Hoの時間計測方法は複雑で、人類が初めて月面に足を踏み入れた瞬間から秒を数え始めていた
    • 開始時点は実際には約1,500万秒後で、これは初期のコンピューターOSにおける0秒だった
  • うるう秒を廃止しようとする取り組みが進んでおり、2035年までに完了することが望まれている

    • UTCの目的は、TAIから整数秒だけずらすことで平均太陽時を近似することにある
    • MSTを追跡したくないならTAIに切り替えるべきで、UTCがMSTから外れるなら歴史的なうるう秒は意味を失う
  • 現代の「UTCエポック」は1972年1月1日である

    • 1971年末に0.107758 TAI秒の不規則なジャンプがあり、その後UTCの刻み速度がTAIと正確に一致するよう変更された
    • 1970年と1971年のUnix時間は、実際にはその期間のUTC時刻と一致していない
  • 時間計測について読むたびに新しいことを学ぶ

    • Unix時間が最も単純な時間追跡方法だと思っていた
    • うるう秒は適用されないと思っていたが、十分に考えていなかったようだ
  • 最近、VAX、あるいはOpenVMS上で動作するコードを扱っていて、エポックが1858年11月17日になっているのを初めて見た

    • コード内ではUnixエポックに抽象化されていた
  • ある時点の時刻はPOSIXタイムスタンプでは表現できず、また一部のPOSIXタイムスタンプは実際の時刻と一致しない

  • この記事はクリスマスを台無しにしたと思う

    • 秒はエポック以降の秒であるべきで、太陽日からずれていても構わない
    • 秒-エポック変換器が補正作業を担当すべきだ
  • データベースに日付を保存するときは、常にUnixエポック時間で保存し、タイムゾーン情報は別に保存している

    • TAI形式でタイムスタンプを保存し、必要な場合にUTCへ変換するほうがよいのではないかと考えている
    • タイムゾーンは人間が作った概念であり、時間とともに調整される
    • 絶対時間を基準にして、必要なときにローカル時刻形式へ変換すべきだ
  • 10年ほど前のカンファレンスで、Googleはうるう秒を使わず、それを通常の秒に分散させるという話を聞いた

    • GoogleはNTPサーバーを修正してうるう秒を分散させている
  • 同期されていて単調増加する時間計測方法があるのか気になる