web-dev-qa-db-ja.com

1970年1月1日が「エポック時間」なのはなぜですか。

なぜですか

1970年1月1日00:00:00

エポックタイムを考慮した?

432
rahul

初期のバージョンのunixは1/60秒間隔でシステム時間を測定しました。つまり、32ビットの符号なし整数は、829日未満の期間しか表現できません。このため、0という数字で表される時間(Epochと呼ばれる)をごく最近の過去に設定する必要がありました。これが1970年代初頭にあったように、エポックは1971-1-1に設定されました。

その後、システム時間は1秒ごとに増加するように変更され、それによって32ビットの符号なし整数で表すことができる時間幅が約136年に増えました。カウンターから1秒ごとに絞り出すことはもはや重要ではなくなったため、Epochは最も近い10年に切り捨てられ、1970年から19年にかけての1年となりました。これは1971年1月1日より少し良く考えられていたと仮定しなければなりません。

1970-1-1をエポックとして使用する32ビット符号付き整数は、 2038-1までの日付を表すことができることに注意してください。 -19 、その日付で1901-12-13に折り返します。

402
Matt Howells

歴史

最も初期のバージョンのUnix時間は60ビットのレートで増加する32ビット整数を持っていました、そしてそれは初期のUnixシステムのハードウェアの上のシステムクロックのレートでした。その結果、60 Hzという値が一部のソフトウェアインターフェイスに表示されます。エポックも現在の値とは異なりました。 1971年11月3日付けの初版Unixプログラマーズマニュアルでは、Unix時間を「1月1日00:00:00からの時間」と定義しています。 、1971年、60分の1秒で測定されました。

48
Stu Thompson

http://ja.wikipedia.org/wiki/Unix_time#History Unix時間の起源と選ばれたEpochについて少し説明しています。 unix timeとEpoch dateの定義は、現在のものに安定する前にいくつかの変更を経ました。

しかし、1970年1月1日が最後に選択された理由は説明されていません。

ウィキペディアのページからの抜粋

1971年11月3日付けの初版 Unixプログラマーズマニュアルでは、Unix時間を「1月1日00:00:00からの時間、1971と定義されています。二番目の"。

範囲が限られていたため、レートが1 Hzに変更されてEpochが現在の値に設定される前は、Epochは複数回再定義でした。

現在の定義の複雑さを含む、その後のいくつかの問題は、最初は完全に定義されているのではなく、使用法によって徐々に定義されてきたUnix時間に起因しています。

8
Dawie Strauss

エポック基準日

エポック基準日 は、時間をカウントするタイムライン上のポイントです。その時点より前の時点は負の数でカウントされ、それ以降の時点は正の数でカウントされます。

使用中の多くの時代

1970年1月1日00:00:00がエポック時間と見なされるのはなぜですか?

いいえ、ありませんtheEpoch、anEpoch。 多くのエポックが使用されています

このEpochの選択は任意です任意です

主要なコンピュータシステムとライブラリは、少なくとも数十 数十のさまざまなエポック のいずれかを使用します。あなたが言及した1970 UTCの瞬間を使用して、最もポピュラーな時代の1つは一般に Unix時間 として知られています。

ポピュラーではありますが、Unix Timeの1970年はmostの一般的なものではないかもしれません。無数のMicrosoft ExcelとLotus 1-2-3のスプレッドシートの場合は1900年1月0日、無数のアプリで世界中の10億以上のiOS/macOSマシンでAppleのCocoaフレームワークが使用している場合は2001年1月1日が最も一般的です。または、おそらく1980年1月6日に GPS デバイスで使用されていますか?

多くの粒度

システムが異なれば、時間のカウントに使用される粒度も異なります。

いわゆる「Unix時間」でさえも、システムによっては全体 や数ミリ秒 ミリ秒 をカウントすることがあります。 Postgresのような多くのデータベースは マイクロ秒 を使います。 Java 8以降の最新のJava.timeフレームワークなどの一部では、 ナノ秒 を使用します。さらに他の粒度を使用するものもあります。

ISO 8601

Epoch参照の使用と粒度には非常に大きな違いがあるため、一般に、Epochからのカウントとしてモーメントを伝達しないようにするのが最善です。エポックと粒度のあいまいさ、そして人間が意味のある値を知覚することができない(したがってバグのある値を見逃す)ことができない場合は、数値ではなくプレーンテキストを使用します。

ISO 8601 規格は、日付と時刻の値をテキストとして表現するための実用的で適切に設計されたフォーマットの広範なセットを提供します。これらのフォーマットは、文化を超えて人間が読むのが容易であるのと同様に、機械で解析するのが簡単です。

これらが含まれます:

1
Basil Bourque