Artikel
ISO-8601-Dauern: was P1DT2H bedeutet
Eine Antwort der YouTube Data API besagt, dass ein Video PT4M13S dauert. Eine Kalendereinladung trägt P15DT5H0M20S. Ein Verzeichnisserver versieht ein Konto mit dem Zeitstempel 20260424174227.0Z, was verwandt aussieht, aber etwas völlig anderes ist. Diese kompakten Zeichenketten folgen Regeln, die man kennen sollte, denn eine Fehllesung macht aus Minuten Monate. Dies ist ein Rundgang durch das ISO-8601-Dauerformat: was die Buchstaben bedeuten, wo das Format auftaucht, und seine eine große Feinheit, dass eine so geschriebene Dauer nicht immer eine feste Zeitspanne ist.
P, T, und was die Buchstaben bedeuten
Eine ISO-8601-Dauer beginnt mit P (Periode). Danach folgen die Datumskomponenten, jede eine Zahl gefolgt von ihrem Einheitenbuchstaben: Y Jahre, M Monate, W Wochen, D Tage. Ein T trennt den Datumsteil vom Zeitteil: H Stunden, M Minuten, S Sekunden. Jede Komponente ist optional; man schreibt nur, was man braucht. PT15M sind 15 Minuten, P1DT2H ist ein Tag und zwei Stunden, P3W sind drei Wochen. Das T ist keine Dekoration: M bedeutet Monate davor und Minuten danach, also ist P1M ein Monat, während PT1M eine Minute ist. Die letzte vorhandene Komponente darf einen Dezimalbruch tragen, wie in PT0.5S für eine halbe Sekunde. Und die Einheiten laufen nicht von selbst über: PT90M ist eine völlig gültige Art, anderthalb Stunden zu schreiben.

Wo einem das Format tatsächlich begegnet
Diese Syntax ist still und leise überall. Die YouTube Data API gibt jede Videolänge als ISO-8601-Dauer an (PT4M13S). HTML akzeptiert Dauern im datetime-Attribut des time-Elements. Kalendereinladungen nutzen es: der iCalendar-Standard (RFC 5545) schreibt Ereignislängen wie PT1H0M0S, lässt aber Jahre und Monate aus seiner Grammatik fallen. xs:duration von XML Schema deckt die vollständige Form ab und erlaubt sogar ein führendes Minuszeichen für negative Dauern. Standardbibliotheken parsen es direkt: java.time liest P- und T-Zeichenketten mit Period.parse und Duration.parse, und dieselbe Aufteilung gibt es in vielen anderen Sprachen. Wer maschinenlesbare Zeitpläne, Feeds oder APIs erzeugt, findet in diesem Format die gemeinsame Sprache für "wie lange".
Warum P1M keine feste Sekundenzahl ist
PT15M sind immer 900 Sekunden. P1M nicht: ein Monat dauert 28, 29, 30 oder 31 Tage, je nachdem, wo er beginnt, also wird P1M erst konkret, wenn man es an einem Datum verankert. Selbst P1D sind nicht garantiert 24 Stunden. In der Europäischen Union werden die Uhren am Sonntag, den 29. März 2026, vorgestellt, sodass dieser Kalendertag 23 Stunden dauert: P1D (ein Kalendertag) und PT24H (genau 24 Stunden) zum selben Samstagabend zu addieren, führt zu unterschiedlichen Zeitpunkten. Deshalb hat java.time zwei Typen, Period für Kalendereinheiten und Duration für exakte Sekunden, und deshalb verlangen Datumsbibliotheken ein Referenzdatum, bevor sie eine Dauer umrechnen. Behandeln Sie die Komponenten Y, M, W und D als Kalenderarithmetik, und nur H, M und S als feste Zeitmengen.
Keine Dauer: 20260424174227.0Z
Eine Zeichenkette wie 20260424174227.0Z sieht aus, als könnte sie zur selben Familie gehören, ist aber ein Zeitstempel, keine Dauer, und auch kein ISO 8601. Es ist GeneralizedTime, ein Format aus ASN.1, die Notation, die von LDAP-Verzeichnissen und X.509-Zertifikaten verwendet wird. Man liest es als Felder fester Breite: Jahr 2026, Monat 04, Tag 24, dann 17:42:27, ein optionaler Bruchteil (.0), und Z für UTC. Man begegnet ihm in Active-Directory-Attributen wie whenCreated und whenChanged, in LDAP-Exporten, und innerhalb von Zertifikaten, wo RFC 5280 GeneralizedTime für Gültigkeitsdaten ab dem Jahr 2050 vorschreibt. Das Erkennungsmerkmal, das es von der kompakten Form von ISO 8601 unterscheidet, ist das fehlende T: ISO würde denselben Zeitpunkt als 20260424T174227Z schreiben.

Eine Dauer entschlüsseln, ohne die Spezifikation zu lesen
Für eine einmalige Zeichenkette zerlegt unser ISO-Dauer-Konverter jede P/T-Dauer in ihre Komponenten und ihre Gesamtsumme in Sekunden, und baut die Zeichenkette aus den eingegebenen Zahlen wieder auf. Wenn man statt einer Dauerzeichenkette zwei Uhrzeiten hat (eine Schicht, die etwa von 22:00 bis 06:30 läuft), liefert der Zeitdauer-Rechner die verstrichene Zeit, einschließlich Spannen über Mitternacht hinweg. Beide laufen vollständig im Browser: nichts, was man eingibt, verlässt das eigene Gerät. Und für schnelles Lesen ohne jedes Werkzeug decken zwei Reflexe die meisten Fälle ab: nach dem T suchen, um zu wissen, ob ein M Monate oder Minuten bedeutet, und sich merken, dass alles links vom T Kalenderarithmetik ist, keine feste Sekundenzahl.
Tools in diesem Artikel
- ISO-8601-Dauer-KonverterISO-8601-Dauern (P1Y2M…) in Komponenten und Sekunden parsen und konvertieren. Im Browser.
- Zeitdauer-RechnerDie Dauer zwischen zwei Tageszeiten berechnen, einschließlich Übernacht-Spannen. Im Browser.
- Datumsformat-KonverterEin Datum in ISO-, US-, europäisches, gepunktetes, kompaktes und Unix-Format konvertieren. Im Browser.
Häufige Fragen
Ist PT1M dasselbe wie P1M?
Nein. Der Buchstabe M ändert seine Bedeutung je nach T-Trennzeichen: P1M ist ein Monat, PT1M ist eine Minute. Das ist die häufigste Fehllesung dieses Formats, und einige API-Fehler sind genau deswegen ausgeliefert worden. Im Zweifel zuerst nach dem T suchen: alles davor zählt in Jahren, Monaten, Wochen und Tagen; alles danach zählt in Stunden, Minuten und Sekunden. Eine wohlgeformte Dauer hat nie Zeiteinheiten vor dem T oder Datumseinheiten danach.
Wie schreibt man 90 Minuten als ISO-8601-Dauer?
PT90M und PT1H30M sind beide gültig und beschreiben dieselbe Zeitspanne. ISO 8601 zwingt Komponenten nicht in ihre konventionellen Bereiche, also sind Minuten über 59 oder Stunden über 23 in Ordnung. Parser akzeptieren beide Schreibweisen; welche ein System ausgibt, hängt davon ab, ob es normalisiert. Wer Dauern für Menschen erzeugt, für den ist PT1H30M freundlicher; wer Dauern im Code vergleicht, sollte deren Gesamtsekunden statt der Zeichenketten vergleichen, gerade weil zwei unterschiedliche Zeichenketten dasselbe bedeuten können.
Was ist der Unterschied zwischen einer Dauer und einem Intervall?
Eine Dauer sagt, wie lange, ohne Position im Kalender: P3D sind drei Tage, beginnend an einem beliebigen Zeitpunkt. Ein ISO-8601-Intervall bindet eine Dauer an tatsächliche Daten, geschrieben mit einem Schrägstrich: 2026-07-04T00:00:00Z/P3D bedeutet die drei Tage ab dem 4. Juli 2026, und ein Start/Ende-Paar wie 2026-07-04/2026-07-07 drückt dieselbe Spanne aus. Es gibt auch wiederholte Intervalle mit einem R-Präfix: R5/2026-07-04T00:00:00Z/P1D bedeutet fünf tägliche Wiederholungen ab diesem Start. Intervalle lösen die Mehrdeutigkeit von Kalendereinheiten auf, da P1M, an ein Datum gebunden, immer eine bestimmte Länge hat.