2009-07-07 13 views
381

Warum istWarum ist 1/1/1970 die "Epoche"?

1. Januar 1970 00.00.00

als die Epoche Zeit?

+18

Nicht sicher, warum jemand dachte, dies sei subjektiv. "Epochenzeit" ist ein Standardzeitstempelverfahren. – ConcernedOfTunbridgeWells

+0

n.b. Diese Frage wurde von @phoenix gestellt, ich habe gerade die Grammatik korrigiert. –

+4

Heute war es vor 380.000 Stunden – mplungjan

Antwort

358

Frühe Versionen von Unix gemessen Systemzeit in 1/60 s-Intervallen. Dies bedeutete, dass eine 32-Bit-Ganzzahl ohne Vorzeichen nur eine Zeitspanne von weniger als 829 Tagen darstellen konnte. Aus diesem Grund musste die Zeit, die durch die Nummer 0 (genannt die Epoche) dargestellt wurde, in der jüngsten Vergangenheit gesetzt werden.Da dies in den frühen 1970er Jahren war, wurde die Epoche auf 1971-1-1 festgelegt.

Später wurde die Systemzeit geändert, um jede Sekunde zu erhöhen, was die Zeitspanne verlängerte, die durch eine 32-Bit-Ganzzahl ohne Vorzeichen auf etwa 136 Jahre dargestellt werden konnte. Da es nicht mehr so ​​wichtig war, jede Sekunde aus dem Ladentisch zu drücken, wurde die Epoche auf das nächste Jahrzehnt abgerundet und wurde 1970-1-1. Man muss davon ausgehen, dass dies als etwas sauberer angesehen wurde als 1971-1-1.

Beachten Sie, dass ein 32-Bit- ganze Zahl mit unterzeichnet 1970.01.01 als seine Epoche Daten bis zu 2038-1-19, auf denen darstellen kann heute wird es um zu 1901.12.13 wickeln.

+25

Hat 1/60 etwas mit der Frequenz des amerikanischen Power Net zu tun? – xtofl

+47

Es ist die Frequenz eines der Oszillatoren auf den Systemkarten, die zu der Zeit verwendet wurden. Es war nicht notwendig, dass der Oszillator 60 Hz betrug, da er auf DC lief, aber es war wahrscheinlich billig, das zu verwenden, was damals am gebräuchlichsten war, und Fernsehgeräte wurden damals in Massenproduktion hergestellt ... –

+16

Es war sehr üblich, dass sowohl Computeruhren als auch RTCs mit der US-Netzwellenform synchronisiert wurden, weil sie sehr zuverlässig war (ist?). Es wurde multipliziert, um den Prozessor-Takt zu erhalten, und geteilt, um Sekunden für den RTC zu erhalten. – Alexios

-7

Kurze Antwort: Warum nicht?

Längere Antwort: Die Zeit selbst spielt keine Rolle, solange jeder, der sie benutzt, sich auf ihren Wert einigt. Da das 1/1/70 schon so lange benutzt wird, wird es den Code so verständlich wie möglich für so viele Leute wie möglich machen.

Es gibt keinen großen Verdienst bei der Wahl einer beliebigen Epoche, nur um anders zu sein.

+1

Aber warum 1970 als Jahr gewählt wird. – rahul

+33

Da Unix 1969 entwickelt und 1971 erstmals veröffentlicht wurde, war es vernünftig anzunehmen, dass keine Maschine eine Systemzeit früher als 1970-01-01-00: 00: 00 darstellen müsste. –

+3

Als Entwickler von historischen Simulationsspielen erscheint es ziemlich albern, dass die Designer einiger Zeitobjekte davon ausgehen, dass alle Programme nur Daten in der Zukunft oder in der jüngeren Vergangenheit darstellen wollen. Natürlich können wir unsere eigenen Darstellungen programmieren, oder aber in einem Anpassungsfaktor arbeiten. – Dronz

43

History.

Die frühesten Versionen von Unix Zeit hatte eine 32-Bit-Integer mit einer Rate von 60 Hz erhöht wird, die die Rate der der Systemtakt auf der Hardware von die frühen Unix-Systemen war. Der Wert 60 Hz erscheint weiterhin in einigen Software-Schnittstellen als Ergebnis. Die Epoche unterschied sich vom aktuellen Wert. Die erste Ausgabe Unix-Programmierhandbuch vom 3. November 1971 definiert die Unix Zeit als „die Zeit seit dem 00.00.00, 1. Januar 1971, gemessen in sixtieths von einem zweiten“.

+1

Epochenzeit ist 1. Januar 1970, nicht 1. Januar 1971. –

+71

@Steve: Historisch hat er Recht, du liegst falsch. ;-) – Stobor

7

http://en.wikipedia.org/wiki/Unix_time#History erklärt ein wenig über die Ursprünge der Unix-Zeit und der gewählten Epoche. Die Definition der Unix-Zeit und des Epochendatums hat einige Änderungen durchlaufen, bevor es sich stabilisiert hat, was es jetzt ist.

Aber es sagt nicht, warum genau 1/1/1970 am Ende gewählt wurde.

Bemerkenswerte Auszüge aus der Wikipedia-Seite:

Die erste Ausgabe 3. November Handbuch vom Unix Programmer 1971 definiert die Unix-Zeit als „die Zeit seit dem 00.00.00, 1. Jan. , gemessen in sechzigstel Sekunden. "

Aufgrund des begrenzten Bereichs wurde die Epoche mehr als einmal definiert, bevor die Rate auf 1 Hz geändert wurde und die Epoche auf ihren aktuellen Wert eingestellt wurde.

Mehrere spätere Probleme, einschließlich der Komplexität der vorliegenden Definition, resultieren daraus, dass die Unix-Zeit nach und nach definiert wurde und nicht vollständig definiert wurde.