エポック以降の経過時間
(aphyr.com)-
エポック以降の秒
-
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タイムスタンプシステムとのおおまかな整合が必要なら、うるう秒をより長い時間窓にわたって分散させることができる。
qntmのt-a-iのようなライブラリは、POSIXとTAIの間の変換をサポートしている。 -
うるう秒を廃止しようとする取り組みが進んでおり、2035年までの完了が期待されている。これには、「1日は86,400秒」という仮定を使うあらゆるものに対して変換テーブルを構築する追加作業が必要になるが、2つの時刻の間の秒数を問うことはより単純になるだろう。少なくとも2035年以降の時刻については。
-
1件のコメント
Hacker Newsのコメント
『A Deepness in the Sky』というSF小説を読んだ。本の中で、エポック以降の秒への言及が興味深かった
うるう秒を廃止しようとする取り組みが進んでおり、2035年までに完了することが望まれている
現代の「UTCエポック」は1972年1月1日である
時間計測について読むたびに新しいことを学ぶ
最近、VAX、あるいはOpenVMS上で動作するコードを扱っていて、エポックが1858年11月17日になっているのを初めて見た
ある時点の時刻はPOSIXタイムスタンプでは表現できず、また一部のPOSIXタイムスタンプは実際の時刻と一致しない
この記事はクリスマスを台無しにしたと思う
データベースに日付を保存するときは、常にUnixエポック時間で保存し、タイムゾーン情報は別に保存している
10年ほど前のカンファレンスで、Googleはうるう秒を使わず、それを通常の秒に分散させるという話を聞いた
同期されていて単調増加する時間計測方法があるのか気になる