web-dev-qa-db-ja.com

Unixの時刻が1970-01-01で始まるのはなぜですか?

Unixの時刻が1970-01-01で始まるのはなぜですか?なぜ1971-01-01または他の日付ではないのですか?

49
Templar

グーグルが私のためにそこにあったのでなければ、私は答えを知りませんでした:

から ここ (無料サブスクリプションが必要):

Linuxは、公式の「誕生日」から1秒単位で時間を数えるというUnixの伝統に従っています。

より完全な説明はこの Wired Newsの記事 にあります。 それは、初期のUnixエンジニアが時間の開始に統一された日付を設定する必要があり、1970年の元日が最も便利に思えたため、その日付を任意に選択したことを説明しています。

30
Hanan N.

Unixは1970年に生まれませんでした。

Unixエポックは1970年1月1日の午前0時です。これはUnixの「誕生日」ではないことを覚えておくことが重要です-オペレーティングシステムの大まかなバージョンは1960年代頃のものでした。代わりに、70年代初頭にシステムに日付がプログラムされたのは、都合が良かったからです。ベルラボでUnixの開発に携わったエンジニアの1人であるデニスリッチー氏はそうしています。

6
Danny A

私は質問が好きです:-)

答えてみよう(もちろんソース:インターネット)

Unix時間は、正または負(符号付き)の32ビット整数(整数)で表されます。 Unixはもともと60年代と70年代に開発されたため、Unix時間の「開始」は1970年1月1日のGMT(グリニッジ標準時)に設定されました。この日付/時間には、Unix時間の値0が割り当てられました。これはわかっています。 Unixエポックとして。

32ビットの符号付き整数は-2147483648〜2147483647の整数を表すことができます。UnixTimeは0から始まるため、負のUnix Time値はエポックからさかのぼり、正の数は時間を進めます。つまり、Unix Timeは、1901年12月13日の-2147483648または20:45:52 GMTのUnix Time値から、2038年1月19日の2147483647または3:14:07 GMTのUnix Time値までの範囲です。これらの日付は、始まり、先史時代とUnix時間の終わり。

Unix Timeの終了は、2038年1月19日03:14:07 GMTに発生します。 2038年1月19日03:14:08 GMTまだ32ビットのUnix時間を使用するすべてのコンピューターがオーバーフローします。これは「2038年問題」として知られています。これは「2000年問題」よりも重大な問題になると考える人もいます。 2038年問題の修正は、Unix時間を64ビット整数に格納することです。これはほとんどの64ビットオペレーティングシステムですでに進行中ですが、多くのシステムは2038年までに更新されない可能性があります。

3
Nikhil Mulley