Entwicklung · 3 Min. Lesezeit ·
Unix-Zeitstempel: Sekunden oder Millisekunden?
Der 13-Stellen-Bug, der jede Woche in Produktion geht, und eine ganz einfache Regel, um die beiden Einheiten zu unterscheiden.

JavaScript rechnet in Millisekunden, die meisten Backends in Sekunden. Wer beides verwechselt, landet im Januar 1970 oder Zehntausende Jahre in der Zukunft.
Zähl die Stellen
Ein aktueller Zeitstempel in Sekunden hat 10 Stellen (1790000000 ist der 21. September 2026). Derselbe Moment hat in Millisekunden 13 Stellen, in Mikrosekunden 16 und in Nanosekunden 19.
Die Faustregel
Ist der Betrag größer als 10¹², sind es Millisekunden, sonst Sekunden. Das gilt für jeden Millisekunden-Zeitstempel nach September 2001 und jeden Sekunden-Zeitstempel vor dem Jahr 33658.
const ms = Math.abs(n) > 1e12 ? n : n * 1000;
Ein Zeitstempel hat keine Zeitzone
Ein Unix-Zeitstempel zählt die Sekunden seit dem 1. Januar 1970, 00:00 UTC. Dieselbe Zahl ist überall auf der Welt derselbe Moment; nur die Anzeige ändert sich. Fehler entstehen, wenn Ortszeit so in einen Zeitstempel umgerechnet wird, als wäre sie UTC. Dann verschiebt sich jedes Datum um deinen Zeitzonenversatz, oft um ein oder zwei Stunden, und bei der Zeitumstellung noch einmal. Speichere und übertrage Zeitstempel in UTC und rechne nur dann in Ortszeit um, wenn du sie einem Menschen anzeigst.
Die aktuelle Zeit in gängigen Sprachen
JavaScript Date.now() Millisekunden
JavaScript Math.floor(Date.now() / 1000) Sekunden
Python time.time() Sekunden (mit Nachkommastellen)
Java System.currentTimeMillis() Millisekunden
Go time.Now().Unix() Sekunden
PostgreSQL EXTRACT(EPOCH FROM now()) Sekunden
MySQL UNIX_TIMESTAMP() Sekunden
Daten vor 1970 und das Jahr 2038
Negative Zeitstempel sind gültig: −86400 ist der 31. Dezember 1969. Manche ältere Systeme und Tabellenprogramme kommen damit nicht zurecht, deshalb sind Geburtsdaten und historische Daten eine häufige Fehlerquelle. Am anderen Ende ist bei einer vorzeichenbehafteten 32-Bit-Ganzzahl bei 2147483647 Schluss, das ist der 19. Januar 2038 um 03:14:07 UTC. Systeme, die Zeitstempel noch in 32 Bit speichern, springen dann auf 1901; mit 64 Bit ist das Problem für Milliarden Jahre gelöst.
Schaltsekunden
Unix-Zeit ignoriert Schaltsekunden: Jeder Tag hat genau 86.400 Sekunden. Das hält die Rechnung einfach, und für fast jede Anwendung spielt der Unterschied keine Rolle. Nur Systeme, die präzise Intervalle über eine Schaltsekunde hinweg brauchen, etwa manche wissenschaftliche oder finanzielle, müssen darauf achten.
Eine schnelle Checkliste zur Fehlersuche
- Das Datum liegt im Januar 1970: Ein Sekundenwert wurde als Millisekunden gelesen.
- Das Jahr ist fünfstellig: Ein Millisekundenwert wurde als Sekunden gelesen.
- Alle Daten weichen um dieselbe Stundenzahl ab: Ortszeit wurde als UTC behandelt oder umgekehrt.
- Die Daten weichen einen Teil des Jahres um eine Stunde ab: Eine Zeitumstellung wurde ignoriert.
- Die Daten springen auf 1901: ein 32-Bit-Überlauf.
Wähle die Einheit ausdrücklich
Der Zeitstempel-Konverter von 4Dev rät nicht: "Unix Timestamp" bedeutet Sekunden und "Unix Timestamp (ms)" Millisekunden, daneben gibt es Varianten in Mikro- und Nanosekunden. Insgesamt sind es 33 Formate, darunter ISO 8601, RFC 2822, SQL DATETIME und serielle Excel-Datumswerte.
ISO 8601, wenn Menschen das Datum lesen
Zeitstempel sind ideal zum Speichern und Rechnen, aber für Menschen schwer lesbar. In Logs, APIs und Dateien, die Menschen öffnen, ist ISO 8601 wie 2026-09-21T14:30:00Z eindeutig, sortiert sich als Text richtig und nennt die Zeitzone ausdrücklich. Zwischen beiden umzurechnen ist genau das, wofür der Zeitstempel-Konverter da ist.