Deutsch

Entwicklertools · Unix-Zeitstempelkonverter

Sekunden oder Millisekunden? Eine 10-stellige Epoche von einer 13-stelligen unterscheiden

· Wie es funktioniert

Zeitstempel Unix-Zeit Entwickler-Workflow

Ein zehnstelliger Sekundenwert und ein dreizehnstelliger Millisekundenwert, die auf einen Zeitpunkt hinweisen
Originale ToolAcre-Vektorillustration

Die meisten Epochenwerte, denen Sie heute begegnen, sind entweder zehnstellig (Sekunden) oder dreizehnstellig (Millisekunden), und wenn Sie falsch raten, wird ein Datum Zehntausende von Jahren entfernt angezeigt. In diesem Beitrag wird die Arithmetik hinter den Ziffernzahlen erläutert und warum ein Umrechner die Einheit angeben und nicht daraus ableiten sollte.

1700000000 oder 1700000000000? – derselbe Augenblick, auf zwei Arten geschrieben, und das Dashboard, das ein Datum in ferner Zukunft anzeigte

Ein Protokollwert von 1700000000 und ein Nutzlastwert von 1700000000000 können denselben Zeitpunkt beschreiben. Betrachten Sie die ersten als Millisekunden und Ihr Dashboard fällt in den Januar 1970; Behandeln Sie die Sekunde als Sekunde und ihr Datum springt Tausende von Jahren in die Zukunft. Ein Zeitstempel ist nur eine Zählung plus einer Einheit und einem Startpunkt, sodass in einer Datenbankspalte namens „created_at“ ohne Dokumentation wesentliche Informationen weggelassen wurden.

Warum aktuelle Sekundenzählungen zehn Ziffern haben – die milliardste Sekunde im Jahr 2001, der zehnstellige Bereich bis 2286 und was neun Ziffern bedeuten würden

Die Unix-Zeit zählt die verstrichenen Sekunden ab 1970-01-01 00:00:00 UTC gemäß der üblichen POSIX-Konvention. Der Zähler hat in 2001 die Marke von einer Milliarde überschritten; Bei zeitgenössischen positiven Daten sind es üblicherweise zehn Dezimalstellen. Es bleibt zehnstellig, bis es in 2286 zehn Milliarden erreicht. Dies ist eine Eigenschaft der Basis-Zehn-Notation und keine in eine ISO-Datumszeichenfolge integrierte Regel. Negative Werte vor der Epoche und Daten weit außerhalb der Gegenwart machen eine einfache Abkürzung zur Ziffernzählung ungültig.

Warum Millisekundenzählungen dreizehn haben – ein Faktor von tausend, drei zusätzliche Ziffern und woher die Konventionen von JavaScript und Java kommen

JavaScript Date.getTime() zählt üblicherweise Millisekunden und multipliziert den Zeitstempel einer Sekunde mit 1.000. Drei Nullen machen aus einem aktuellen zehnstelligen Sekundenzähler einen dreizehnstelligen Millisekundenzähler. Beispielsweise werden aus 1.700.000.000 Sekunden 1.700.000.000.000 Millisekunden; beide sind 2023-11-14T22:13:20.000Z. Ein Konverter, der lediglich Trennzeichen einfügt, ohne die angenommene Einheit anzugeben, kann aus einer gültigen Zahl ein plausibles, aber falsches Datum machen.

Wo das Raten schief geht – kleine Werte in der Nähe der Epoche, Daten vor 2001 und zukünftige Daten, bei denen die Ziffernzählung nicht mehr differenziert

Heuristiken schlagen um 1970 fehl, wenn ein Millisekundenwert kurz sein kann, vor 2001, wenn Sekunden weniger als zehn Ziffern haben, oder bei Mikrosekunden- und Nanosekundenzählern. ToolAcre interpretiert standardmäßig Größen unter 10¹¹ als Sekunden und größere Werte als Millisekunden und beschriftet die verwendete Einheit. Dieser Schwellenwert ist eine praktische Schätzung und kein eindeutiger Formatdecoder. Ein von einer bestimmten API bereitgestellter Zeitstempel sollte anhand der Dokumentation dieser API interpretiert werden, auch wenn seine Länge ungewöhnlich ist.

Arbeitsbeispiel: drei Werte aus einem Protokoll – 1700000000, 1700000000000 und 1700000000000000, eingelesen in Sekunden, Millisekunden und Mikrosekunden

Drei ganze Zahlen aus einem illustrativen Protokoll zeigen die Falle. Interpretieren Sie 1700000000 als Sekunden und 1700000000000 als Millisekunden: Beide werden zu 2023-11-14T22:13:20Z aufgelöst. Interpretieren Sie 1700000000000000 als Mikrosekunden und dividieren Sie durch eine Million, um die gleiche Sekundenzahl zu erhalten. Der ToolAcre-Konverter akzeptiert Sekunden oder Millisekunden, keinen Mikrosekundenmodus: Das Einfügen dieser dritten Zahl ohne vorherige Konvertierung ihrer Einheit bestätigt nicht den beabsichtigten Zeitpunkt. Behalten Sie beim Debuggen immer das Rohfeld und seine Einheit bei.

Warum die Einheit angegeben und nicht erraten werden sollte – wie der Konverter die von ihm verwendete Einheit anzeigt, sodass eine falsche Annahme sichtbar und nicht stillschweigend ist

Ein Dienst, der Zeitstempel sendet, sollte die Einheit in seinem Schema benennen oder ISO 8601-Text mit einem expliziten Offset verwenden. Wenn ein Legacy-Feld nicht dokumentiert ist, vergleichen Sie mehrere Werte mit einem anderen zuverlässigen Ereigniszeitpunkt, bevor Sie eine Entscheidung treffen. Ein einziges zufällig plausibles Datum ist kein ausreichender Beweis. Der Umrechner zeigt an, welche Einheit er angewendet hat, sodass Sie einen Fehler mit Faktor 1.000 erkennen können. Ändern Sie die Einheit explizit und vergleichen Sie sie, anstatt sich auf eine automatische Schätzung als langfristigen API-Vertrag zu verlassen.

Was dies nicht abdeckt – als Zeichenfolgen gespeicherte Zeitstempel, ISO 8601-Text oder serielle Daten in Tabellenkalkulationen, die unterschiedliche Probleme darstellen

In diesem Artikel werden keine Excel-Seriendaten, Zeichenfolgen wie 2026-09-28T10:15Z oder die Zeitzonenformatierung lokaler Uhrwerte erläutert. Das sind unterschiedliche Darstellungen. Unix-Zeitstempel beziehen sich auf einen Zeitpunkt; Derselbe Zeitpunkt erscheint als unterschiedliche Uhrzeiten in verschiedenen Zonen. Auch Schaltsekundenkonventionen verdienen eine gesonderte Behandlung, und ein 32-Bit-Zähler mit Vorzeichen weist im Jahr 2038 ein Überlaufproblem auf, das sich von der Sekunden-gegen-Millisekunden-Frage unterscheidet.

Fazit: Zählen Sie die Ziffern und bestätigen Sie dann die Einheit – und wie der Unix-Zeitstempelkonverter sowohl Sekunden als auch Millisekunden mit der beschrifteten Einheit liest

Zählen Sie Ziffern als ersten Hinweis und bestätigen Sie dann die vom Hersteller angegebene Einheit und mindestens ein bekanntes Ereignis. Der Unix-Zeitstempelkonverter macht die angewendete Sekunden-/Millisekundenannahme sichtbar und druckt sowohl UTC- als auch lokale Darstellungen in Ihrem Browser. Lassen Sie nicht zu, dass ein ordentlich aussehendes Datum die gegenteilige Dokumentation des Systems, das den Wert erzeugt hat, außer Kraft setzt.