Zum Inhalt springen

ISO 8601 erklärt: Das internationale Datumsformat, das jeder Entwickler verwenden sollte

Warum YYYY-MM-DD eindeutig ist, wie der Standard Wochen, Dauer und Intervalle behandelt und warum er Datenbanken und JSON-APIs antreibt.

· 10 Min. Lesezeit · Gabriel

Das Datum im ISO-8601-Format schreiben
Inhaltsverzeichnis

Das Problem, das ISO 8601 löst

Was bedeutet 03/04/05? In den USA ist es der 4. März 2005. In den meisten Teilen Europas ist es der 3. April 2005. In Japan ist es der 5. April 2003. Diese Art von Mehrdeutigkeit hat zu gescheiterten Verträgen, verpassten Flügen, doppelt bezahlten Rechnungen und mindestens einem berühmten Datenbankmigrationsdebakel geführt. ISO 8601, erstmals 1988 veröffentlicht und zuletzt als ISO 8601-1:2019 und ISO 8601-2:2019 überarbeitet, existiert, um all das zu beenden.

Das Grundformat

Die Hauptregel ist einfach: Daten als JJJJ-MM-TT schreiben, immer mit vierstelliger Jahreszahl, immer mit der größten Einheit zuerst. Das Format sortiert sich korrekt als Zeichenkette und ist der Standard in Datenbanken, Logdateien und Dateinamen.

Uhrzeiten und kombinierte Datum-Zeit-Werte

Uhrzeiten verwenden die 24-Stunden-Notation: HH:MM:SS. Ein kombiniertes Datum mit Uhrzeit verwendet ein wörtliches "T" als Trennzeichen: 2025-01-25T14:30:00. Zeitzoneninformationen werden mit einem "Z" für UTC oder einem vorzeichenbehafteten Offset wie +02:00 angehängt. Ein vollständig qualifizierter Zeitpunkt sieht so aus: 2025-01-25T14:30:00+01:00.

Wochendaten

ISO 8601 definiert auch einen wochenbasierten Kalender, den viele Unternehmen für Geschäftsberichte verwenden. Wochen beginnen am Montag. Woche 1 ist die Woche, die den ersten Donnerstag des Jahres enthält. Ein Wochendatum wird als JJJJ-Www-T geschrieben, z. B. 2025-W04-6. Deshalb haben einige Jahre 52 ISO-Wochen und einige 53.

Ordnungsdaten

Ein selteneres, aber nützliches Format ist das Ordnungsdatum: JJJJ-TTT, wobei TTT der Tag des Jahres von 001 bis 365 (oder 366 in einem Schaltjahr) ist. NASA, Meteorologen und die Luftfahrtindustrie verwenden es häufig.

Dauern und Intervalle

ISO 8601 definiert auch eine Syntax für Dauern. Eine Dauer beginnt mit dem Buchstaben "P" (für "period") und verwendet einbuchstabige Bezeichner. Beispiele:

  • P1Y — ein Jahr
  • P3M — drei Monate
  • PT2H30M — zwei Stunden und dreißig Minuten
  • P1Y2M10DT2H30M — ein Jahr, zwei Monate, zehn Tage, zweieinhalb Stunden

Ein Intervall sind zwei Datum-Zeit-Werte getrennt durch einen Schrägstrich: 2025-01-01T00:00:00Z/2025-12-31T23:59:59Z. Ein wiederkehrendes Intervall wird mit R[n]/ präfixiert.

RFC 3339: das Internet-Profil

Die meisten Internetprotokolle verwenden ISO 8601 nicht direkt. Sie verwenden RFC 3339, eine Spezifikation von 2002 von Graham Klyne und Chris Newman, die eine strikte Teilmenge von ISO 8601 für Internet-Zeitstempel definiert. RFC 3339 ist das, was JSON-APIs, Logdateien, OAuth-Tokens und E-Mail-Header verwenden.

Praktische Tipps für Entwickler

  • Speichere Zeitstempel immer in UTC. Konvertiere nur bei der Anzeige in die lokale Zeit.
  • Schreibe immer vierstellige Jahre.
  • Verwende JJJJ-MM-TT in Dateinamen; sie sortieren chronologisch ohne Zusatzlogik.
  • Wenn deine API ein Datum zurückgibt, gib es als ISO-8601-Zeichenkette in UTC zurück, nicht als Unix-Zeitstempel.
  • Parse mit einer richtigen Bibliothek. Selbstgeschriebene Regex-Parser scheitern irgendwann.
  • Vorsicht mit dem ISO-Wochenjahr. 2024-12-30 liegt im ISO-Wochenjahr 2025.

Weiterführende Literatur

  • ISO, "ISO 8601-1:2019 Date and time — Representations for information interchange — Part 1: Basic rules" (2019).
  • Klyne, G. und Newman, C., "Date and Time on the Internet: Timestamps", IETF RFC 3339 (Juli 2002).

← Zurück zu allen Artikeln