Ich bin mir nicht sicher, warum jemand dies für subjektiv hielt. Die "Epochen" -Zeit ist ein Standard-Zeitstempelschema.
ConcernedOfTunbridgeWells
5
Heute war es vor 380.000 Stunden
mplungjan
21
Wir sollten seit diesem Datum mit dem Zählen der Zeit beginnen, also sind wir jetzt im Jahr 44.
Leonardo Raele
3
Heute, genau jetzt, ist es 1499969999! Es ist nur ca. Noch 8 Stunden!
Dr. Beco
1
@LeonardoRaele Ja! Dann begann zum Beispiel der Zweite Weltkrieg im Jahr 31 BE!
Siavash Mortazavi
Antworten:
417
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.
Hat 1/60 etwas mit der Frequenz des amerikanischen Stromnetzes zu tun?
xtofl
55
Dies ist die Frequenz eines der zu diesem Zeitpunkt verwendeten Oszillatoren auf den Systemplatinen. Es war nicht notwendig, dass der Oszillator 60 Hz hatte, da er mit Gleichstrom betrieben wurde, aber es war wahrscheinlich billig, das zu verwenden, was zu dieser Zeit am gebräuchlichsten war, und Fernseher wurden damals in Massenproduktion hergestellt ...
Matt Howells
18
Tatsächlich war es zu dieser Zeit sehr üblich, dass sowohl Computeruhren als auch RTCs mit der US-Netzwellenform synchronisiert wurden, weil sie sehr zuverlässig waren (sind?). Es wurde multipliziert, um die Prozessortaktung zu erhalten, und geteilt, um Sekunden für die RTC zu erhalten.
Alexios
12
@mafioso: Richtig, ich werde auf meinem Laptop eine Erinnerung für 2038 -... 1901-12-13 einstellen.
18
@JediKnight Dies ist eine Spekulation, die auf meinen eigenen Erfahrungen als Entwickler basiert: Das Ändern eines Standards braucht Zeit, und wenn Ihre Änderung nicht wirksam wird, erhalten Sie konkurrierende Standards . Die wirkliche Lösung für das Epochenproblem sind 64-Bit-Ganzzahlen, die die Epoche nicht rechtzeitig vorantreiben.
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".
Epochenzeit ist der 1. Januar 1970, nicht der 1. Januar 1971.
Steve Harrison
10
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.
Viele Epochen im Einsatz
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?
Viele Granularitäten
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.
ISO 8601
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.
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.
Da Unix 1969 entwickelt und erstmals 1971 veröffentlicht wurde und daher davon auszugehen war, dass keine Maschine eine Systemzeit vor 1970-01-01-00: 00: 00 darstellen muss.
Jörg W Mittag
3
Als Entwickler historischer Simulationsspiele scheint 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 möchten. Natürlich können wir unsere eigenen Darstellungen programmieren oder in einem Anpassungsfaktor arbeiten, aber immer noch.
Dronz
8
Das gleiche Problem vor der Epoche gilt für "praktische" Nicht-Spiel-Anwendungen wie Geschäftskalkulationen, Präsentation wissenschaftlicher Daten, Zeitmaschinen-Benutzeroberflächen usw.
Lenoxus,
7
@Dronz Sie müssen berücksichtigen, dass dies für einen 72000-Dollar-Computer mit 9 KB RAM konzipiert wurde, der Transistoren und Dioden für Logikgatter als CPU verwendete (zu diesem Zeitpunkt keine Chips!). Es war also nicht "albern", das Grundlegendste zu machen, was funktionierte.
Camilo Martin
2
OP ist auf Metaebene korrekt, die Schemata, die wir für die Zeit ausarbeiten, waren immer ziemlich willkürlich. Die Anzahl der Tage in einem Jahr, die Anzahl der Tage im Monat, das Jahr "0" und die Regeln für das Schaltjahr sind ... verrückt. Jedes System ist nur eine Reihe beschissener Kompromisse, die gemacht wurden, weil es das Beste war, was sie mit der verfügbaren Technologie machen konnten und für ihren unmittelbaren Anwendungsfall gut genug funktionierten. Was für alle Ingenieurprojekte gilt
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.
quelle
Geschichte .
quelle
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:
quelle
Epochenreferenzdatum
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.
Viele Epochen im Einsatz
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?
Viele Granularitäten
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.
ISO 8601
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
quelle
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.
quelle