Warum ist
1. Januar 1970 00:00:00
Betrachtet man die Epoche ?
Warum ist
1. Januar 1970 00:00:00
Betrachtet man die Epoche ?
Antworten:
Frühe Versionen von Unix haben die Systemzeit in Intervallen von 1/60 s gemessen. Dies bedeutete, dass eine 32-Bit-Ganzzahl ohne Vorzeichen nur eine Zeitspanne von weniger als 829 Tagen darstellen konnte. Aus diesem Grund musste die durch die Zahl 0
( Epoche genannt ) dargestellte Zeit in der jüngeren Vergangenheit festgelegt 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, wodurch sich die Zeitspanne, die durch eine vorzeichenlose 32-Bit-Ganzzahl dargestellt werden konnte, auf etwa 136 Jahre erhöhte. Da es nicht mehr so wichtig war, jede Sekunde aus der Theke zu drücken, wurde die Epoche auf das nächste Jahrzehnt abgerundet und wurde so zu 1970-1-1. Man muss davon ausgehen, dass dies etwas ordentlicher war als 1971-1-1.
Beachten Sie, dass ein 32-Bit - signierte ganze Zahl mit 1970.01.01 als seine Epoche Daten bis repräsentieren 2038.01.19 , zu welchem Zeitpunkt wird es 1901.12.13 umschlingen.
Die frühesten Versionen der Unix-Zeit hatten eine 32-Bit-Ganzzahl, die mit einer Rate von 60 Hz inkrementiert wurde. Dies war die Rate der Systemuhr auf der Hardware der frühen Unix-Systeme. Der Wert 60 Hz wird daher in einigen Softwareschnittstellen immer noch angezeigt. Die Epoche unterschied sich auch vom aktuellen Wert. Die erste Ausgabe des Unix-Programmierhandbuchs vom 3. November 1971 definiert die Unix-Zeit als "die Zeit seit 00:00:00, 1. Januar 1971, gemessen in Sechzigstelsekunden".
http://en.wikipedia.org/wiki/Unix_time#History erklärt ein wenig über die Ursprünge der Unix-Zeit und die gewählte Epoche. Die Definition der Unix-Zeit und des Epochendatums hat einige Änderungen erfahren, bevor sie sich auf das stabilisierte, was sie jetzt ist.
Es heißt aber nicht, warum am Ende genau der 1.1.1970 gewählt wurde.
Bemerkenswerte Auszüge aus der Wikipedia-Seite:
Die erste Ausgabe des Unix-Programmierhandbuchs vom 3. November 1971 definiert die Unix-Zeit als "die Zeit seit 00:00:00, 1. Januar 1971 , gemessen in Sechzigstelsekunden".
Aufgrund des begrenzten Bereichs wurde die Epoche mehr als einmal neu definiert , bevor die Rate auf 1 Hz geändert und die Epoche auf ihren gegenwärtigen Wert eingestellt wurde.
Einige spätere Probleme, einschließlich der Komplexität der vorliegenden Definition, resultieren daraus, dass die Unix-Zeit schrittweise durch Verwendung definiert wurde und nicht vollständig definiert wurde.
Ein Epochenreferenzdatum ist ein Punkt auf der Zeitachse, ab dem wir die Zeit zählen. Momente vor diesem Punkt werden mit einer negativen Zahl gezählt, Momente danach werden mit einer positiven Zahl gezählt.
Warum wird der 1. Januar 1970 00:00:00 als Epochenzeit angesehen?
Nein, nicht die Epoche, eine Epoche. Es gibt viele Epochen .
Diese Wahl der Epoche ist willkürlich .
Die wichtigsten Computersysteme und Bibliotheken verwenden mindestens ein paar Dutzend verschiedene Epochen . Eine der beliebtesten Epochen ist allgemein als Unix-Zeit bekannt , wobei der von Ihnen erwähnte UTC-Moment von 1970 verwendet wird.
Während beliebt, die Unix - Zeit 1970 möglicherweise nicht die sein , die meisten verbreitet. Ebenfalls am häufigsten sind der 0. Januar 1900 für unzählige Microsoft Excel- und Lotus 1-2-3-Tabellen oder der 1. Januar 2001, der von Apples Cocoa-Framework in über einer Milliarde iOS / MacOS-Computern weltweit in unzähligen Apps verwendet wird. Oder vielleicht am 6. Januar 1980 von GPS- Geräten verwendet?
Unterschiedliche Systeme verwenden unterschiedliche Granularitäten bei der Zählzeit.
Sogar die sogenannte „Unix-Zeit“ variiert, wobei einige Systeme ganze Sekunden und einige Millisekunden zählen . Viele Datenbanken wie Postgres verwenden Mikrosekunden . Einige, wie das moderne Java.time- Framework in Java 8 und höher, verwenden Nanosekunden . Einige verwenden noch andere Granularitäten.
Da die Verwendung einer Epochenreferenz und die Granularitäten so unterschiedlich sind, ist es im Allgemeinen am besten, die Kommunikation von Momenten als Count-from-Epoche zu vermeiden. Verwenden Sie zwischen der Mehrdeutigkeit von Epoche und Granularität sowie der Unfähigkeit des Menschen, sinnvolle Werte wahrzunehmen (und daher fehlerhafte Werte zu übersehen), Klartext anstelle von Zahlen.
Die Norm ISO 8601 bietet eine umfangreiche Sammlung praktischer, gut gestalteter Formate zum Ausdrücken von Datums- und Uhrzeitwerten als Text. Diese Formate sind sowohl maschinell zu analysieren als auch für Menschen in verschiedenen Kulturen leicht zu lesen.
Diese beinhalten:
2019-01-23
2019-01-23T12:34:56.123456Z
2019-01-23T18:04:56.123456+05:30
2019-234
Kurze Antwort: Warum nicht?
Längere Antwort: Die Zeit selbst spielt keine Rolle, solange sich jeder, der sie nutzt, über ihren Wert einig ist. Da der 1.1.70 schon so lange verwendet wird, wird die Verwendung des Codes für möglichst viele Menschen so verständlich wie möglich.
Es ist kein großer Verdienst, eine willkürliche Epoche zu wählen, nur um anders zu sein.