- UTC(協定世界時)がよくないと言っているわけではない
- 国際度量衡総会は2035年以降、UTCからうるう秒を廃止する
- うるう秒は地球の自転と関連しているが、これは不規則で予測不可能だった
- UTC以外の重要な時間標準の1つにTAI(国際原子時)があり、こちらにはうるう秒がない
- UTCは主に工学用途では使われないため、うるう秒があってもよいが、Unix時間はうるう秒のために線形でなくなり、多くの混乱を招いている
TAI Unix時間
- 1970年1月1日0時0分10秒から始まるTAI Unix時間は線形に増加し、有用な数学的性質を持つが、人気がない
- Unix時間とは異なり、相互に置き換え可能なものではない
- Unix時間と比べて
- 線形なので、t + 1秒、t + 100000000秒がいつかを非常に簡単に計算できる。Unix時間は将来のうるう秒がいつ発生するか分からないため計算できず、予測しかできない
- 2つのタイムスタンプの差を簡単に計算できる
- 日付や時刻を計算するのは難しい。私たちは通常、TAI時刻ではなくUTC時刻を知りたいので、うるう秒を反映する必要がある
- 曖昧さがなく、有効な値だけを返す
大きな事故なくTAI Unix時間へ移行する
- POSIX標準で時間をUnix時間、TAI+C Unix時間、レガシーUnix時間の3つに分けることを提案
- レガシーUnix時間は、ある時点以前は従来のUnix時間を、その後はTAI+C Unix時間を返す
- うるう秒はオンラインリソースに依存するため、うるう秒が廃止される2035年に合わせて移行するのが合理的
4件のコメント
もう少し詳しく読んでみようと思い、とりあえずざっくり翻訳してみました!
https://weblog2.wafe.kr/posts/translation-unix-time-bad/
いわゆる Unix 時間というのは、普通に使われている unix timestamp のことを指しているんですよね?
普段ずっと使っているものなので何も考えていませんでしたが、だとすると Linux のような OS が過去のうるう秒を反映したタイムスタンプを返しているということなんですね? すごいことでしたね...
その逆です。うるう秒は現実の1秒を存在しなかった時刻にしてしまうのに近いため、UTCに合わせられたOSではタイムスタンプをそのまま使って計算すればUnix timeになり、逆に実在したうるう秒を加えてやって初めてTAIの値になります