Unix-Timestamp-Formate erklärt
Eine vollständige Referenz aller Unix-Timestamp-Formate — Sekunden, Millisekunden, Mikrosekunden, ISO 8601 und RFC 2822 — mit Beispielen, die zeigen, welches Format jede Sprache und Datenbank nutzt.
Unix-Zeit in Sekunden — das universelle Format
Das häufigste Format: eine 32- oder 64-Bit-Ganzzahl, die ganze Sekunden seit dem 1. Januar 1970 00:00:00 UTC zählt. Derzeit eine 10-stellige Zahl um 1,7 Milliarden.
- Beispiel: 1700000000 = 2023-11-15 06:13:20 UTC
- Genutzt von: Python time.time(), PHP time(), Go time.Now().Unix(), Ruby Time.now.to_i, C time(NULL)
- Gespeichert als: 32-Bit-int (Legacy, Maximaljahr 2038), 64-Bit-int (modern, sicher für Milliarden Jahre)
- Datenbank: MySQL UNIX_TIMESTAMP(), PostgreSQL EXTRACT(EPOCH FROM NOW())::BIGINT
Unix-Zeit in Millisekunden — das Format von JavaScript
Millisekunden seit der Unix-Epoch: eine 13-stellige Ganzzahl mit Millisekunden-Präzision. Dieses Format nutzt das Date-Objekt von JavaScript intern.
- Beispiel: 1700000000000 = 2023-11-15 06:13:20.000 UTC
- Genutzt von: JavaScript Date.now(), Java System.currentTimeMillis(), .NET DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
- Umrechnung in Sekunden: Math.floor(ms / 1000)
- Umrechnung aus Sekunden: seconds * 1000
ISO 8601 — der menschenlesbare Standard
ISO 8601 ist ein internationaler Standard, um Datum und Zeit als Strings darzustellen. Anders als Unix-Timestamps ist er selbstbeschreibend: Das Format kodiert Datum/Zeit und den Zeitzonen-Offset.
- 2023-11-15T06:13:20Z — UTC (das Suffix Z bedeutet UTC)
- 2023-11-15T01:13:20-05:00 — mit explizitem UTC-Offset (EST)
- 2023-11-15T06:13:20.000Z — mit Millisekunden
- JavaScript: date.toISOString() liefert immer UTC mit Z-Suffix
- Python: datetime.isoformat(), Go: time.Format(time.RFC3339)
RFC 2822 — Datumsformat für E-Mail und HTTP
RFC 2822 (für HTTP auch RFC 1123 genannt) ist das Datumsformat in E-Mail-Headern und HTTP-Antworten. JavaScripts Date.toUTCString() liefert dieses Format.
- Beispiel: Wed, 15 Nov 2023 06:13:20 GMT
- Verwendet in: HTTP-Antwortheadern (Last-Modified, Date, Expires), E-Mail-Headern (Date:)
- JavaScript: date.toUTCString()
- In modernen APIs seltener, aber in Web-Infrastruktur noch weit verbreitet
So erkennst du das Timestamp-Format
Wenn du einen unbekannten Timestamp-Wert erhältst, nutze diese Regeln zur Format-Erkennung:
- 10 Stellen, beginnt mit 1 → Unix-Sekunden (z. B. 1700000000)
- 13 Stellen, beginnt mit 1 → Unix-Millisekunden (z. B. 1700000000000)
- Negativ → Unix-Sekunden oder -Millisekunden vor 1970
- Enthält T oder Z → ISO 8601 (z. B. 2023-11-15T06:13:20Z)
- Enthält Komma oder Wochentagsnamen → RFC 2822 (z. B. Wed, 15 Nov 2023 ...)
- 16 Stellen → Mikrosekunden (durch 1,000,000 für Sekunden teilen)
- 19 Stellen → Nanosekunden (durch 1,000,000,000 für Sekunden teilen)
Mikrosekunden und Nanosekunden
Manche hochpräzisen Systeme nutzen Einheiten kleiner als Millisekunden. Im Anwendungscode sind sie selten, tauchen aber in Low-Level-Systemen, Datenbank-Interna und Observability-Tools auf.
- Mikrosekunden (µs): 16-stellige Ganzzahl — Rust SystemTime as_micros(), PostgreSQL clock_gettime()
- Nanosekunden (ns): 19-stellige Ganzzahl — Go time.Now().UnixNano(), Rust SystemTime as_nanos()
- PostgreSQL EXTRACT(EPOCH) liefert eine Gleitkommazahl mit Mikrosekunden als Nachkommateil
- Nanosekunden in Sekunden umrechnen: durch 1,000,000,000 (1e9) teilen
FAQ zu Unix-Timestamp-Formaten
- Wie viele Stellen hat ein Unix-Timestamp?
- Ein moderner Unix-Timestamp in Sekunden hat 10 Stellen (um 1,7 Milliarden); in Millisekunden 13. Mikrosekunden haben 16, Nanosekunden 19 Stellen.
- Was ist der Unterschied zwischen Unix-Zeit und ISO 8601?
- Unix-Zeit ist eine einzelne Zahl an Sekunden oder Millisekunden seit 1970 UTC ohne Zeitzone. ISO 8601 ist ein selbstbeschreibender String wie 2023-11-15T06:13:20Z, der Datum, Zeit und Offset kodiert.
- Wie erkenne ich, ob ein Timestamp Sekunden oder Millisekunden ist?
- Zähle die Stellen: 10 sind Sekunden, 13 sind Millisekunden. Ergibt ein Wert ein Datum nahe 1970 oder weit in der Zukunft, wurde die Einheit falsch gelesen.