初版のUnixプログラマーズマニュアルによると、Unix時間は、「1971年1月1日00:00:00からの時間、60分の1秒で測定」と定義されています。
これは、1970年1月1日の現在の真夜中(UTC)の値にいつ変更されましたか?
初版のUnixプログラマーズマニュアルによると、Unix時間は、「1971年1月1日00:00:00からの時間、60分の1秒で測定」と定義されています。
これは、1970年1月1日の現在の真夜中(UTC)の値にいつ変更されましたか?
First Edition Unix(1971年11月)では、タイムシステムコールのマニュアルページに、「1971年1月1日00:00:00からの60分の1秒で測定された時間」が返されると記載されていました。これは32ビット値であったため、符号なしとして扱われたとしても、この日付から約2。26年しか追跡できませんでした。ただし、マニュアルページとソースコードのコメントでは、システムコールは「年の時刻を取得」と記述されており、年を設定できませんでした。date
コマンドとctime()
関数(日付と時刻のフォーマットに使用)は年をフォーマットせず、1年を超える時刻値でも正しく機能しなかったため、日付は毎年手動でリセットされ、マニュアルページの1971年はあまり重要ではありません。まあ、1972年には余分な日があるという小さな問題を除いて。これに関しては、後でバグのセクションに「うるう年のためにルーチンを再構築する必要がある」という注記が追加されました。良い。
1972年に、タイムシステムコールのマニュアルページが変更され、「1972年1月1日00:00:00」以降の時刻が返されるようになりました。「時刻は32ビットで格納されます。これにより、 2。26年ごとの危機。」
第4版Unix(1973年11月)では、時間システムコールが「秒単位で測定された1970年1月1日00:00:00GMT以降の時間」を返すように変更されました。(マニュアルページの日付は1973年8月5日であるため、変更が最初に行われたときである可能性があります。)これは基本的に現在の定義です。うるう秒に関して作成されました。これを符号付き32ビット数として返すシステムでは、これは2038年まで機能します。幸い、多くのシステムがこの値に64ビットを使用しています。