Warum ist
1. Januar 1970 00:00:00
als die Epochenzeit ?
Warum ist
1. Januar 1970 00:00:00
als die Epochenzeit ?
Frühe Versionen von Unix maßen die Systemzeit in 1/60-s-Intervallen. Das bedeutete, dass eine 32-Bit-Ganzzahl ohne Vorzeichen nur eine Zeitspanne von weniger als 829 Tagen darstellen konnte. Aus diesem Grund wurde die Zeit, die durch die Zahl 0
(genannt die Epoche ) musste in der jüngsten Vergangenheit angesiedelt sein. Da es sich um die frühen 1970er Jahre handelte, wurde die Epoche auf 1971-1-1 festgelegt.
Später wurde die Systemzeit so geändert, dass sie jede Sekunde erhöht wurde, wodurch sich die Zeitspanne, die durch eine 32-Bit-Ganzzahl ohne Vorzeichen dargestellt werden konnte, auf etwa 136 Jahre erhöhte. Da es nicht mehr so wichtig war, jede Sekunde aus dem Zähler herauszuholen, wurde die Epoche auf die nächste Dekade abgerundet, so dass 1970-1-1 entstand. Man muss davon ausgehen, dass dies als etwas ordentlicher angesehen wurde als 1971-1-1.
Beachten Sie, dass eine 32-Bit unterzeichnet Ganzzahl mit 1970-1-1 als Epoche kann Daten bis zu folgenden Zeitpunkten darstellen 2038-1-19 An diesem Tag wird sie auf den 13.12.1901 umgeschaltet.
Die frühesten Versionen der Unix-Zeit hatten eine 32-Bit-Ganzzahl, die mit einer Rate von 60 Hz inkrementiert, was die Rate der der Systemuhr auf der Hardware der der frühen Unix-Systeme war. Der Wert 60 Hz erscheint immer noch in einigen Software Schnittstellen auf. Auch die Epoche unterschied sich von dem aktuellen Wert. Die erste Ausgabe Handbuch für Unix-Programmierer vom 3. November 1971 definiert die Unix-Zeit als "die Zeit seit 00:00:00, Jan. 1, 1971, gemessen in Sechzigstel einer Sekunde".
Eine epochales Bezugsdatum ist ein Punkt auf der Zeitachse, von dem aus wir die Zeit zählen. Momente vor diesem Punkt werden mit einer negativen Zahl gezählt, Momente danach mit einer positiven Zahl.
Warum gilt der 1. Januar 1970 00:00:00 als Epochenzeit?
Nein, nicht die Epoche, eine Epoche. Es gibt viele Epochen im Einsatz .
Diese Wahl der Epoche ist willkürlich .
Die wichtigsten Computersysteme und Bibliotheken verwenden mindestens eine der folgenden Möglichkeiten ein paar Dutzend verschiedene Epochen . Eine der beliebtesten Epochen ist gemeinhin bekannt als Unix-Zeit unter Verwendung des von Ihnen erwähnten UTC-Zeitpunkts 1970.
Unix Time's 1970 ist zwar populär, aber vielleicht nicht das le plus gemeinsam. Ebenfalls im Rennen um den häufigsten Termin wäre 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-Geräten weltweit in unzähligen Apps verwendet wird. Oder vielleicht der 6. Januar 1980, verwendet von GPS Geräte?
Verschiedene Systeme verwenden eine unterschiedliche Granularität bei der Zählung der Zeit.
Sogar die sogenannte "Unix-Zeit" variiert, wobei einige Systeme ganze Stunden zählen. Sekunden und etwas Zählen Millisekunden . Viele Datenbanken wie Postgres verwenden Mikrosekunden . Einige, wie die moderne java.time Framework in Java 8 und höher, verwenden Sie Nanosekunden . Einige verwenden noch andere Granularitäten.
Da es bei der Verwendung einer Epochenreferenz und der Granularität so viele Unterschiede gibt, ist es im Allgemeinen am besten, Momente nicht als Zählung ab Epoche zu kommunizieren. Aufgrund der Mehrdeutigkeit von Epoche und Granularität sowie der Unfähigkeit des Menschen, sinnvolle Werte zu erkennen (und daher fehlerhafte Werte zu übersehen), sollten Sie Klartext anstelle von Zahlen verwenden.
Le site ISO 8601 Standard bietet einen umfangreichen Satz praktischer, gut gestalteter Formate für die Darstellung von Datums- und Zeitwerten als Text. Diese Formate sind sowohl maschinell leicht zu analysieren als auch von Menschen in verschiedenen Kulturen leicht zu lesen.
Dazu gehören:
2019-01-23
2019-01-23T12:34:56.123456Z
2019-01-23T18:04:56.123456+05:30
2019-234
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 durchlief eine Reihe von Änderungen, bevor sie sich auf dem heutigen Stand stabilisierte.
Es wird jedoch nicht gesagt, warum genau der 1.1.1970 gewählt wurde.
Bemerkenswerte Auszüge aus der Wikipedia-Seite:
Le site Erstausgabe Das Unix Programmer's Manual vom 3. November 1971 definiert die Unix-Zeit als "die Zeit seit 00:00:00, 1. Januar", 1971 gemessen in Sechzigstelsekunden".
Wegen [der] begrenzten Reichweite wurde die Epoche mehr als einmal umdefiniert bevor die Rate auf 1 Hz geändert und die Epoche auf ihren aktuellen Wert gesetzt wurde.
Mehrere spätere Probleme, einschließlich der Komplexität der vorliegenden Definition, resultieren daraus, dass die Unix-Zeit nicht von Anfang an vollständig, sondern schrittweise durch den Gebrauch definiert wurde.
Kurze Antwort: Warum nicht?
Längere Antwort: Die Zeit selbst spielt keine Rolle, solange sich alle, die sie verwenden, über ihren Wert einig sind. Da 1/1/70 schon so lange in Gebrauch ist, macht die Verwendung dieser Zeitangabe Ihren Code für möglichst viele Menschen verständlich.
Es ist kein großer Vorteil, eine beliebige Epoche zu wählen, nur um anders zu sein.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.