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.