なぜですか
1970年1月1日00:00:00
エポックタイムを考慮しましたか?
UNIXの初期のバージョンでは、1/60秒間隔でシステム時間が測定されていました。つまり、32ビットの符号なし整数は、829日未満の期間しか表すことができませんでした。このため、数字で表される時刻(エポック0
と呼ばれる)は、ごく最近に設定する必要がありました。これは1970年代初頭のことであったため、エポックは1971-1-1に設定されました。
その後、システム時刻が1秒ごとに増分するように変更され、32ビットの符号なし整数で表すことができる期間が約136年に延長されました。カウンターから毎秒搾り出すことはもはやそれほど重要ではなくなったため、エポックは最も近い10年に切り捨てられ、1970-1-1になりました。これは1971-1-1よりも少しすっきりしていると考えられていたと思わなければなりません。
エポックとして1970-1-1を使用する32ビットの符号付き整数は、2038-1-19までの日付を表すことができ、その日付で1901-12-13にラップアラウンドすることに注意してください。
歴史。
Unix時間の初期のバージョンでは、60 Hzのレートで32ビット整数が増分していました。これは、初期のUnixシステムのハードウェアのシステムクロックのレートでした。結果として、60Hzの値が一部のソフトウェアインターフェイスに引き続き表示されます。エポックも現在の値とは異なります。1971年11月3日付けの初版Unixプログラマーズマニュアルでは、Unix時間を「1971年1月1日00:00:00から60分の1秒で測定した時間」と定義しています。
http://en.wikipedia.org/wiki/Unix_time#Historyは、Unix時間の起源と選択された時代について少し説明しています。UNIX時間とエポック日付の定義は、現在の状態に安定する前に、いくつかの変更が加えられました。
しかし、なぜ1970年1月1日が最終的に選ばれたのかはわかりません。
ウィキペディアのページからの注目すべき抜粋:
1971年11月3日付けの初版Unixプログラマーズマニュアルでは、Unix時間を「 1971年1月1日00:00:00から60分の1秒で測定した時間」と定義しています。
範囲が制限されているため、レートが1 Hzに変更され、エポックが現在の値に設定される前に、エポックが複数回再定義されました。
現在の定義の複雑さを含むいくつかの後の問題は、Unix時間が最初から完全に定義されているのではなく、使用法によって徐々に定義されていることに起因しています。
エポック基準日は、時間をカウントするタイムライン上のポイントです。そのポイントの前の瞬間は負の数でカウントされ、後の瞬間は正の数でカウントされます。
1970年1月1日00:00:00がエポックタイムと見なされるのはなぜですか?
いいえ、エポックではなく、エポックです。使用されている多くのエポックがあります。
このエポックの選択は任意です。
主要なコンピュータシステムとライブラリは、少なくとも数十のさまざまな時代のいずれかを使用します。最も人気のあるエポックの1つは、一般にUnix Timeとして知られており、あなたが言及した1970UTCの瞬間を使用します。
人気がありますが、UnixTimeの1970年は最も一般的ではないかもしれません。また、最も一般的なのは、無数のMicrosoftExcelおよびLotus1-2-3スプレッドシートの場合は1900年1月0日、または無数のアプリで世界中の10億台を超えるiOS/macOSマシンでAppleのCocoaフレームワークによって使用される2001年1月1日です。それとも、GPSデバイスで使用されている1980年1月6日ですか?
システムが異なれば、時間のカウントに異なる粒度が使用されます。
いわゆる「Unix時間」でさえ変化し、システムによっては秒全体をカウントし、ミリ秒をカウントするシステムもあります。Postgresなどの多くのデータベースはマイクロ秒を使用します。Java 8以降の最新のjava.timeフレームワークなど、一部はナノ秒を使用します。さらに他の粒度を使用するものもあります。
エポック参照の使用と粒度には非常に大きなばらつきがあるため、一般に、エポックからのカウントとしてモーメントを伝達することは避けるのが最善です。エポックと粒度のあいまいさ、および人間が意味のある値を認識できないこと(したがって、バグのある値を見逃すことができないこと)の間で、数字の代わりにプレーンテキストを使用します。
ISO 8601標準は、日時値をテキストとして表現するための実用的な適切に設計されたフォーマットの広範なセットを提供します。これらの形式は、マシンで簡単に解析できるだけでなく、文化を超えて人間が簡単に読み取ることができます。
これらには以下が含まれます:
2019-01-23
2019-01-23T12:34:56.123456Z
2019-01-23T18:04:56.123456+05:30
2019-234
簡単な答え:なぜですか?
より長い答え:それを使用するすべての人がその価値に同意する限り、時間自体は実際には重要ではありません。1/1/70は長い間使用されてきたので、それを使用すると、できるだけ多くの人がコードを理解できるようになります。
ただ違うために任意のエポックを選ぶことに大きなメリットはありません。