Unix Time ist Regel eine 32-Bit-Zahl von ganzen Sekunden vom ersten Moment des Jahres 1970 in UTC, der epoch1 January 1970 00:00:00 UTC
ist. Das bedeutet eine Reichweite von etwa 136 Jahren mit etwa der Hälfte beiderseits der Epoche. Negative Zahlen sind früher, Null ist die Epoche und positiv sind später. Für eine vorzeichenbehaftete 32-Bit-Ganzzahl reichen die Werte von 1901-12-13
bis 2038-01-19 03:14:07 UTC
.
Dies ist nicht in Stein geschrieben. Nun, es ist geschrieben, aber in einer Reihe von verschiedenen Steinen. Ältere sagen 32-Bit, neuere 64-Bit. Einige Spezifikationen sind, dass die Bedeutung "implementation-defined" ist. Einige Unix-Systeme verwenden einen nicht signierten Int, um sich nur über die Epoche hinaus in die Zukunft zu erstrecken, aber die übliche Praxis war eine vorzeichenbehaftete Zahl. Einige verwenden einen Float statt einer ganzen Zahl. Weitere Informationen finden Sie im Wikipedia-Artikel unter Unix Time und this Question.
Also im Grunde macht Ihre Frage keinen Sinn. Sie müssen den Kontext Ihrer Programmiersprache (Standard C, anderes C, Java usw.), Umgebung (POSIX-kompatibel), bestimmter Softwarebibliothek oder Datenbankspeicher oder App kennen.
Vermeiden Count-From-Epoch
diesen Mangel an Spezifität kommt die Tatsache, dass a couple dozen other epochs werden von verschiedenen Software-Systemen verwendet worden, einig sehr beliebt und weit verbreitet. Beispiele umfassen 1. Januar 1601 für NTFS-Dateisystem & COBOL, 1. Januar 1980 für verschiedene FAT-Dateisysteme, 1. Januar 2001 für Apple Cocoa und Januar 0, 1900 für Excel & Lotus 1-2-3 Tabellenkalkulation.
Fügen Sie noch die Tatsache hinzu, dass verschiedene Granularitäten der Zählung verwendet worden sind. Abgesehen von ganzen Sekunden verwenden einige Systeme Millisekunden, Mikrosekunden oder Nanosekunden.
Ich empfehle gegen Tracking-Datum-Zeit als ein Count-from-Epoche. Verwenden Sie stattdessen bestimmte Datentypen, die in Ihrer Programmiersprache oder Datenbank verfügbar sind. Wenn nicht verfügbar oder wenn Daten ausgetauscht werden, folgen Sie dem Standard ISO 8601, der sinnvolle String-Formate für verschiedene Arten von Datum-Uhrzeit-Werten definiert.
- Datum
- Ein Datum-Zeit mit einer von der UTC-Offset (Z "Zulu" für UTC) (Anmerkung padding Null-Offset)
2015-07-29T14:59:08Z
2001-02-13T12:34:56.123+05:30
- Woche (mit oder ohne Tag der Woche)
- Ordinal Datum (Tag-of-Jahr)
- Intervall
"2007-03-01T13:00:00Z/2008-05-11T15:30:00Z"
- Dauer (Format
PnYnMnDTnHnMnS
)
P3Y6M4DT12H30M5S
= "3 Jahre, 6 Monate, 4 Tage, 12 Stunden, 30 Minuten und 5 Sekunden"
Suche StackOverflow.com für viele weitere Fragen und Antworten zu diesen Themen.
Unix 'time_t' ist ein vorzeichenbehafteter 32-Bit-Int, so dass Sie, wie Sie festgestellt haben, auf 1901 zurückgehen können. Sie sollten Ihr Betriebssystem überprüfen, viele haben 'time_t' auf 64 Bit erweitert, was Ihnen ein paar hundert Milliarden Jahre Spielraum gibt. –