Alle Artikel

ISO 8601 Duration: wie man eine Dauer im Standardformat schreibt

Der Standard ISO 8601 definiert nicht nur ein Datumsformat, sondern auch ein Format zum Schreiben von Dauern — eine Zeichenkette wie PT1H30M, die eindeutig und maschinenlesbar „1 Stunde 30 Minuten" beschreibt.

Der Aufbau des Formats

Die Zeichenkette beginnt immer mit dem Buchstaben P (period). Datumskomponenten (Jahre, Monate, Tage) folgen direkt auf P, während Zeitkomponenten (Stunden, Minuten, Sekunden) nach dem Buchstaben T stehen, der Datums- und Zeitteil trennt. P2DT4H bedeutet zum Beispiel „2 Tage und 4 Stunden".

Wozu der Buchstabe T gebraucht wird

Ohne das Trennzeichen T wäre der Buchstabe M mehrdeutig — er steht sowohl für Monate (im Datumsteil) als auch für Minuten (im Zeitteil). Deshalb bedeutet P1M „1 Monat", während PT1M „1 Minute" bedeutet.

Direkt in der Java-Standardbibliothek verankert

Die Methoden Duration.parse() und Period.parse() aus dem Paket java.time lesen ISO 8601 Duration-Strings direkt ein, ganz ohne externe Bibliothek. Das macht das Format zu einem naheliegenden Austauschformat zwischen einem Java- oder Kotlin-Backend und jeder externen API, die Dauern als solche Zeichenketten zurückgibt.

Wofür man das braucht

  • Die Dauer eines Videos oder Events aus der Antwort einer externen API entschlüsseln.
  • Eine korrekte ISO 8601 Duration-Zeichenkette für die eigene API oder den eigenen Datenfeed erstellen.
  • Dauern zwischen einem menschenlesbaren Format und der maschinellen ISO-Notation umrechnen.

Bruchteile von Sekunden in der Notation

Der Standard ISO 8601 erlaubt einen Dezimalteil nur bei der letzten (kleinsten) Komponente der Zeichenkette — zum Beispiel bedeutet PT1.5S „1,5 Sekunden", und PT1H30.5M bedeutet „1 Stunde 30,5 Minuten". Ein Dezimalteil bei jeder anderen Komponente außer der letzten ist vom Standard nicht vorgesehen.

Tool ausprobieren