Timestamp Formats

Unix-Timestamp-Formate erklärt

Eine vollständige Referenz für alle Unix-Timestamp-Formate — Sekunden, Millisekunden, Mikrosekunden, ISO 8601 und RFC 2822 — mit Beispielen, die zeigen, welches Format jede Sprache und Datenbank verwendet und wie man sie auf einen Blick unterscheidet.

Jedes Unix-Timestamp-Format auf einen Blick

Ein Unix-Timestamp ist nur eine Zahl, und sein Format ist eigentlich nur seine Einheit — wie fein er ab dem 1. Januar 1970 UTC zählt. Die Einheit ist fast immer an der Ziffernzahl ablesbar: 10 Ziffern sind Sekunden, 13 sind Millisekunden, 16 sind Mikrosekunden, 19 sind Nanosekunden. Die beiden String-Formate, ISO 8601 und RFC 2822, sind stattdessen selbstbeschreibend. Die Tabelle unten ist die gesamte Landschaft; die folgenden Abschnitte behandeln jedes Format und wie man sie unterscheidet.

FormatZiffernBeispielVerwendet von
Sekunden101700000000Python, PHP, Go, Ruby, C, SQL
Millisekunden131700000000000JavaScript, Java, .NET
Mikrosekunden161700000000000000PostgreSQL, Rust
Nanosekunden191700000000000000000Go UnixNano, Tracing-Systeme
ISO 8601String2023-11-15T06:13:20ZAPIs, Logs (selbstbeschreibend)
RFC 2822StringWed, 15 Nov 2023 06:13:20 GMTE-Mail, HTTP-Header

Unix-Zeit in Sekunden — das universelle Format

Das häufigste Format: eine 32-Bit- oder 64-Bit-Ganzzahl, die die Anzahl ganzer 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
  • Verwendet von: Python time.time(), PHP time(), Go time.Now().Unix(), Ruby Time.now.to_i, C time(NULL)
  • Gespeichert als: 32-Bit-int (alt, max. Jahr 2038), 64-Bit-int (modern, sicher für Milliarden Jahre)
  • Datenbank: MySQL UNIX_TIMESTAMP(), PostgreSQL EXTRACT(EPOCH FROM NOW())::BIGINT

Unix-Zeit in Millisekunden — JavaScripts Format

Millisekunden seit der Unix-Epoche: eine 13-stellige Ganzzahl mit Millisekunden-Präzision. Das ist das Format, das JavaScripts Date-Objekt intern verwendet.

  • Beispiel: 1700000000000 = 2023-11-15 06:13:20.000 UTC
  • Verwendet 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 zur Darstellung von Datum und Uhrzeit als Strings. Anders als Unix-Timestamps ist er selbstbeschreibend: das Format kodiert sowohl Datum/Uhrzeit als auch den Zeitzonen-Offset.

  • 2023-11-15T06:13:20Z — UTC (das Z-Suffix 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 — E-Mail- und HTTP-Datumsformat

RFC 2822 (aktualisiert durch RFC 5322 für E-Mail und gespiegelt durch RFC 9110 für HTTP) ist das menschenlesbare 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-Antwort-Headern (Last-Modified, Date, Expires), E-Mail-Headern (Date:)
  • JavaScript: date.toUTCString()
  • In modernen APIs seltener, aber in der Web-Infrastruktur noch weit verbreitet

Wie man das Timestamp-Format erkennt

Wenn du einen unbekannten Timestamp-Wert erhältst, identifizieren diese Regeln sein Format. Die Ziffernzahl klärt jeden numerischen Fall; die beiden String-Formate sind auf den ersten Blick offensichtlich.

HinweisFormat
10 ZiffernUnix-Sekunden
13 ZiffernUnix-Millisekunden
16 ZiffernMikrosekunden
19 ZiffernNanosekunden
Enthält T oder ZISO 8601
Komma oder WochentagsnameRFC 2822
Negative GanzzahlSekunden oder Millisekunden vor 1970
  • Plausibilitätsprüfung: jeder numerische Wert sollte zu einem glaubwürdigen Datum der aktuellen Ära dekodieren (etwa 2001–2038 für 10-stellige Sekunden)
  • Ein Datum nahe 1970 oder Tausende Jahre entfernt bedeutet, dass die Einheit falsch gelesen wurde

Mikrosekunden und Nanosekunden

Manche hochpräzisen Systeme verwenden Einheiten kleiner als Millisekunden. Diese sind in Anwendungscode selten, tauchen aber in Low-Level-Systemen, Datenbank-Internas 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
  • Umrechnung von Nanosekunden in Sekunden: durch 1.000.000.000 (1e9) teilen

Auflösung und Sekundenbruchteil-Präzision

Jedes Format oben trägt eine andere Zeitauflösung. Ein Format zu wählen heißt zu wählen, wie fein du zwei Momente unterscheiden kannst — von einer Sekunde bis zu einer Nanosekunde.

  • 1-Sekunden-Auflösung: Unix-Sekunden (10 Ziffern), traditionelles POSIX time_t
  • 1-Millisekunde: JavaScript Date, MongoDB BSON Date, Java Instant.toEpochMilli()
  • 1-Mikrosekunde: Chrome/WebKit-Timestamps, Python datetime.timestamp(), PostgreSQL timestamp precision 6
  • 100-Nanosekunden: Windows FILETIME, .NET DateTime.Ticks
  • 1-Nanosekunde: Java Instant (volle Präzision), Go time.UnixNano(), JS Temporal.Instant.epochNanoseconds (BigInt)
  • Pikosekunde und darunter: PTP/IEEE-1588-Wire-Format (1/2^32 einer Sekunde), NTP-Fraction-Feld
  • Wähle die gröbste Auflösung, die deine Anforderungen erfüllt — Subsekunden-Präzision geht oft bei JSON-Serialisierung oder String-Round-Trip verloren
  • Beim Konvertieren zwischen Formaten über Unix-Millisekunden oder -Nanosekunden (via BigInt) gehen — das ist der kleinste gemeinsame Nenner, der die Präzision bewahrt

Timestamp-Format-Konverter

Konvertiere zwischen Unix-Zeit und den plattformspezifischen Timestamp-Formaten, denen du in freier Wildbahn begegnest:

FAQ

Wie viele Ziffern hat ein Unix-Timestamp?
Ein moderner Unix-Timestamp in Sekunden hat 10 Ziffern (etwa 1,7 Milliarden); in Millisekunden sind es 13 Ziffern. Mikrosekunden haben 16 Ziffern und Nanosekunden 19 Ziffern.
Welches Timestamp-Format verwendet JavaScript?
JavaScripts Date arbeitet in Millisekunden — Date.now() liefert einen 13-stelligen Millisekunden-Timestamp, und new Date(ms) erwartet Millisekunden. Multipliziere Unix-Sekunden mit 1000, bevor du sie an Date übergibst.
Was ist der Unterschied zwischen Unix-Zeit und ISO 8601?
Unix-Zeit ist eine einzelne Zahl von Sekunden oder Millisekunden seit 1970 UTC und trägt keine Zeitzone. ISO 8601 ist ein selbstbeschreibender String wie 2023-11-15T06:13:20Z, der Datum, Uhrzeit und Offset kodiert.
Was ist das RFC-2822-Datumsformat?
RFC 2822 (aktualisiert durch RFC 5322) ist das menschenlesbare Datumsformat in E-Mail- und HTTP-Headern, etwa "Wed, 15 Nov 2023 06:13:20 GMT". JavaScript erzeugt es mit date.toUTCString().
Wie erkenne ich, ob ein Timestamp in Sekunden oder Millisekunden vorliegt?
Zähle die Ziffern: ein 10-stelliger Wert ist Sekunden, ein 13-stelliger Wert ist Millisekunden. Wenn ein Wert zu einem Datum nahe 1970 oder weit in der Zukunft umgerechnet wird, wurde die Einheit falsch gelesen.