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


回答:


28

googleが私のためにそこにいたことを除いて、私は答えを知りませんでした:

ここから(無料購読が必要です):

Linuxは、公式の「誕生日」(コンピューティング用語では「エポック」と呼ばれる)から1970年1月1日までの時間を秒単位でカウントするというUnixによって設定された伝統に従っています。

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


5

Unixは1970年には生まれません。

Unixエポックは1970年1月1日の真夜中です。これはUnixの「誕生日」ではないことを覚えておくことは重要です。オペレーティングシステムの大まかなバージョンは1960年代に存在していました。Bell Labsの設立当初、Unixに取り組んでいたエンジニアの1人であるDennis Ritchie氏によれば、日付は70年代前半にシステムにプログラムされたのは、そうするのが便利だったからです。


当時は便利で、それ以来世界中の開発者にとっては不便です。
クリスハルクロー

3
@ChrisHalcrow:あなたがdmrだったら、時間0として何を選んだでしょうか?そして、選択は開発者にとってどのように不便ですか?不便なのは、一部の(任意の)$ t = 0 $インスタントが選択されたからではなく、「人間」の用語(年、月、日、時間/分/秒、タイムゾーン、夏時間)で時間を測定するのが複雑だからです。
NickD

@NickD、説明のための良いプロンプトと良い点!ただし、CE 0の00:00:00を選択すると、計算が少し簡単になります。「dmr」とは何ですか?また、皮肉なことに、OPがこの日付が選択された理由の説明を必要とするという事実は、参照日付としての01/01/70の使用法を理解することが誰かにとって本質的に混乱していることを示しています!
クリスハルクロー

2
@ChrisHalcrow:dmr =デニスリッチー。選択した起点から今日までの秒数を計算しましたか?何ビット必要ですか?PDP-11には16ビットのレジスタとワードがありましたが、2つのレジスタと2つのワードをグループ化して、一部の操作で32ビットのレジスタとダブルワードを作成できました。これにより、0時間から+/- 68年(または、時間に署名がない場合は+136年-dmrは署名を選択した)が得られます。彼の選択は、初めて見たときに少し神秘的なものかもしれませんが、上記を考慮すると、かなり明白な決定です...
NickD

1
@NickD-素晴らしい説明!これは、受け入れられた答えの一部である必要があります。コメントをそこに移動してみてください。ここからコメントを削除できますか?
クリスハルクロウ

1

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

それに答えてみましょう(もちろん出典:インターネット)

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

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

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


5
この質問の実際のパラグラフのみが実際に質問に対応しており、多少不正確です(エポックはもともと1971年でしたが、後で移動されました)
マイケルMrozek


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

@Nikhil私はまだUnixがその時に開発されたという理由だけで、なぜ1970年なのかわかりませんか?なぜ1960年ですか?または別の月別の日?
テンプラー

@Nikhilまたはそれは本当に重要ではありませんか?ちょうど最初の月の最初の日は良く見えるし、それは1971年に作られたので、1970も良く見えるでしょうか?
テンプラー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.