# ISO 8601

ISO 8601 ist ein internationaler Standard der ISO, der Empfehlungen über numerische Datumsformate und Zeitangaben enthält. Der Titel der Norm ist Data elements and interchange formats – Information interchange – Representation of dates and times, (deutsch: Datenelemente und Austauschformate – Informationsaustausch – Darstellung von Datum und Uhrzeit).
Durch die Übernahme in die Europäische Norm EN 28601:1992 galten die Empfehlungen von ISO 8601 über Datums- und Zeitangaben soweit sie rein numerisch sind, also insbesondere keinen ausgeschriebenen oder abgekürzten Monatsnamen enthalten – gemäß ISO 8601:1988 auch in Deutschland, Österreich und der Schweiz. Im September 2006 löste DIN ISO 8601 diese Normen sowie die älteren DIN 1355 und DIN 1355-1 für den Bereich des deutschen Normenwerkes ab. Außerdem ist die Norm auch in die DIN 5008 (Schreib- und Gestaltungsregeln für die Text- und Informationsverarbeitung) eingeflossen.
Am 25. Februar 2019 wurde eine neue Version der Norm in zwei Teilen, ISO 8601-1:2019 und ISO 8601-2:2019, veröffentlicht.
ISO 8601 verwendet meist den gregorianischen Kalender, in seltenen Fällen den julianischen Kalender, und die 24-Stunden-Zählung für jeden Tag.

## Zusammenfassung

Die Norm enthält verschiedene Datums- und Zeitformate, die jedoch rein formal und in den meisten Fällen schon durch die Anzahl der verwendeten Ziffern unterscheidbar sind. Die Norm ist vor allem bekannt für das Datumsformat YYYY-MM-DD, das oft auch als „internationales Datumsformat“ bezeichnet wird. Das üblichste Zeitformat der Norm ist hh:mm:ss. Ein Beispiel für das Datum ist 2004-06-14 (14. Juni 2004) und für die Uhrzeit 23:34:30 (23 Uhr, 34 Minuten und 30 Sekunden) und für beides zusammen 2004-06-14T23:34:30. Zur internationalen Kommunikation von Tageszeiten kann der Unterschied der verwendeten Zonenzeit zur koordinierten Weltzeit (UTC) angefügt werden, in der Form +01:00, +0100 oder +01 für mitteleuropäische Zeit und z. B. −04:30 oder −0430 für die ehemalige Standardzeit in Venezuela.
Ein Einsatz dieser Formate wird vor allem im Bereich der Naturwissenschaften, Softwareentwicklung, Dokumentation und für internationale Korrespondenz empfohlen, da hier das größte Fehlerpotential durch länderspezifische Formate existiert. Als Beispiel seien hier verschiedene länderspezifische Schreibweisen für den 2. April 2008 (2008-04-02) genannt: 2/4/08, 4/2/08, 08/4/2, 4/2/2008 sowie Variationen mit . oder - statt /.
Darüber hinaus ist das Datumsformat nach DIN EN 28601 in Deutschland am 1. Mai 1996 zum einzigen normgerechten numerischen Datumsformat (z. B. 1996-05-01) erhoben worden und löste damit das traditionelle Format nach DIN 1355-1 (1.5.1996) ab. Alle Einrichtungen, die im Einflussbereich der DIN-Normen stehen (so auch alle Bildungseinrichtungen und öffentliche Einrichtungen), sind zur Benutzung des neuen Formats angehalten. Allerdings verwendeten große Teile der Bevölkerung im Alltag weiterhin das alte Format, was durch die Neuregelung der DIN 5008 im Jahr 2001 zur Wiederzulassung des üblichen Formats führte, wenn damit keine Missverständnisse entstehen. Die 2020 erschienene Fassung sieht diese Schreibweise mit stets vierstelliger Jahreszahl nur für Schreiben an inländische Empfänger vor.
Außerdem definiert die Norm, wie ihre Vorläufer seit den 1970er Jahren, den Montag als ersten Tag der Kalenderwoche. Als erste Kalenderwoche im Jahr wird die Woche mit dem ersten Januar-Donnerstag definiert, gleichbedeutend, dass diese mindestens vier Tage im neuen Jahr enthält. Dadurch fällt der 4. Januar immer in die erste Kalenderwoche. Mit dieser Regel wird verhindert, dass die erste Kalenderwoche keinen einzigen Arbeitstag enthält. Als Grundlage dient der gregorianische Kalender, auch rückgerechnet für die Zeit vor dem Jahr 1582 (proleptisch).

## Grundsätze

* In allen mit der Norm konformen Formaten werden Datums- und Zeitangaben in der Reihenfolge von der höchsten zur kleinsten Einheit geschrieben („fallende Schreibung“). Die Reihenfolge der Ziffern entspricht der „natürlichen“ Wertigkeit in Stellenwertsystemen der Mathematik, da die größeren Einheiten vor den kleineren stehen (Jahr vor Monat usw.). Das hat den Vorteil, dass die lexikographische und die chronologische Sortierung von Listen von Datums- und Zeitwerten zum gleichen Ergebnis führen. (Dies gilt nur dann nicht, wenn in der Liste negative Jahreszahlen oder eine Mischung der durch die Norm definierten Datumsformate verwendet werden.)
* In jedem Format sind Datums- oder Zeitwerte in verschiedene Einheiten unterteilt (etwa Jahr, Monat, Tag oder Stunde, Minute, Sekunde). Jede Einheit muss dabei mit einer festen Ziffernanzahl wiedergegeben werden, die gegebenenfalls durch vorangestellte Nullen zu erreichen ist.
* Für jedes Format existiert eine kurze Version mit einer minimalen Anzahl von Trennzeichen und eine erweiterte Version, die weitere Trennzeichen zur besseren menschlichen Lesbarkeit enthält. Der Standard empfiehlt, in Texten nur die erweiterten Versionen zu verwenden. Zwischen Datumseinheiten wird der Kurzstrich („Bindestrich-Minus“, U+002D) und zwischen Zeiteinheiten der Doppelpunkt als Trennzeichen verwendet. Zum Beispiel wird der 3. Juni 2014 in Kurzform als 20140603 und in erweiterter Form als 2014-06-03 geschrieben.
* Falls Werte mit geringerer Genauigkeit angegeben werden sollen, können die Werte einzelner Zeiteinheiten weggelassen werden, jedoch nur beginnend mit den kleinsten Einheiten (also „von hinten“). Die Angabe 2004-06 ist zum Beispiel ein gültiger Datumswert und bezeichnet den Juni (6. Monat) des Jahres 2004. Diese Angabe bezeichnet weder den 6. Tag irgendeines Monats im Jahr 2004 noch die Zeitspanne vom Jahr 2004 bis zum Jahr 2006. Für den 6. Tag des Jahres 2004 würde man hier 2004-006 schreiben, die 6. Woche des Jahres 2004 mit 2004-W06 und den Zeitraum von 2004 bis 2006 mit 2004/2006 bezeichnen.
* Falls eine Anwendung es erfordert, kann der Wert der kleinsten dargestellten Zeiteinheit auch durch einen Dezimalbruch präzisiert werden. Als Trennzeichen für die Dezimalstellen kann ein Punkt oder ein Komma verwendet werden.
* Die chronologische Sortierung der Zeitangaben nach ISO 8601 ist gleich der alphanumerischen Sortierung, wenn keine Sekundenbruchteile und keine Zeitzonen verwendet werden.

## Darstellung

Hier verwendete Variablen, stets gegebenenfalls mit führenden Nullen:
| Variable | Darstellung | Werte | Erläuterung |
| Y | YYYY | 0000…9999 | Jahr kann auch negativ oder Null sein kann nach Konvention verlängert werden |
| M | MM | 01…12 | Monat |
| w | ww | 01…53 | Woche des Jahres |
| D | D | 1…7 | Tag der Woche, Montag bis Sonntag |
| D | DD | 01…31 | Tag des Monats |
| D | DDD | 001…366 | Tag des Jahres, 366 nur in Schaltjahren |
| h | hh | 00…24 | Stunde, 24 nur in 24:00 als Endzeit |
| m | mm | 00…59 | Minute |
| s | ss | 00…60 | Sekunde, 60 nur als Schaltsekunde |
| f | f | (0…9)$^+$ | dezimale Bruchteile, in der Regel von Sekunden beliebiger Genauigkeit |

### Verwendete Zeichen
#### Trenner bei festen Datumsangaben

| Trenner | Erläuterung |
| P | Trenner von Datum und Angabe einer Zeitspanne (von englisch period) |
| T | Trenner von Datum und Uhrzeit (time) |
| W | Zur Angabe einer Woche (week) |
| − | verbindliches Vorzeichen für Daten vor der Epoche (Minuszeichen) |
| + | wählbares Vorzeichen für Daten nach der Epoche (Pluszeichen) |
| - | Trenner von Datumselementen (oft wählbar, aber empfohlen) (Bindestrich) |
| : | Trenner von Zeitelementen (oft wählbar, aber empfohlen) (Doppelpunkt) |
| , oder . | Trenner von Ganzzahl und dezimalem Bruchteil (Komma oder Punkt) |

#### Trenner bei Angaben von Zeitspannen

| Trenner | Erläuterung |
| Y | Jahr (year) |
| M | Monat (month) |
| W | Woche (week) |
| D | Tag (day) |
| T | Trenner zwischen Datum und Zeit |
| H | Stunde (hour) |
| M | Minute (minute) |
| S | Sekunde (second) |
| , oder . | dezimale Bruchteile einer Sekunde (fraction) |
| / | Trenner von Start- und Enddatum (bis) |

### Datum

| Datumsbeispiele mit Positivangaben | Datumsbeispiele mit Positivangaben | Datumsbeispiele mit Negativangaben | Datumsbeispiele mit Negativangaben |
| Format | Beispiel | Format | Beispiel |
| YYYY-MM-DD | 2004-07-11 | −YYYY-MM-DD | −0333-07-11 |
| YYYYMMDD | 20040711 | −YYYYMMDD | −03330711 |
| YYYY-MM | 2004-07 | −YYYY-MM | −0333-07 |
| YYYY | 2004 | −YYYY | −0333 |
| YYYY-Www | 2004-W28 | −YYYY-Www | −0333-W28 |
| YYYYWww | 2004W28 | −YYYYWww | −0333W28 |
| YYYY-Www-D | 2004-W28-7 | −YYYY-Www-D | −0333-W28-7 |
| YYYYWwwD | 2004W287 | −YYYYWwwD | −0333W287 |
| YYYY-DDD | 2004-193 | −YYYY-DDD | −0333-193 |
| YYYYDDD | 2004193 | −YYYYDDD | −0333193 |
Das Monat-Tag-Format wurde vor ISO 8601:1988 in ISO 2014 kodifiziert, das Woche-Tag-Format samt Wochenzählung in ISO 2015 und das Tag-Format in ISO 2711.

### Tageszeit

| Format | Beispiel |
| hh:mm:ss | 16:43:16 |
| hhmmss | 164316 |
| hh:mm | 16:43 |
| hhmm | 1643 |
| hh | 16 |
| hh:mm:ss,f | 16:43:16,2345 |

### Beispiel

Das Bild zeigt eine Darstellung mit einem Leerzeichen (statt T) als Trenner zwischen Datum und Zeit.
Dies ist gut lesbar, und solange immer die gleiche Schreibweise benutzt wird, kann das auch sortiert maschinell verarbeitet werden.

### Zeitzonen

Laut Empfehlung wird nach einer zusammenhängenden Datums- und Zeitangabe die Differenz zur Koordinierten Weltzeit (UTC) angegeben. Das Format ist „±hh:mm“, „±hhmm“ oder „±hh“ und berücksichtigt damit sowohl die Zeitzone als auch die Sommerzeit. Als spezieller Wert kann auch „Z“ oder „z“ für UTC (+00:00) eingetragen werden. Um aus einer lokalen Zeitangabe die Zeit in UTC zu bestimmen, muss der Wert nach einem „+“ subtrahiert, der nach einem „−“ addiert werden.
Beispiele mit Zeitzonenangaben :
| Beispiel | Erläuterung |
| 2007-08-31T16:47+00:00 | 16:47 Uhr am 31. August 2007 in der Zeitzone UTC. |
| 2007-12-24T18:21Z | 18:21 Uhr am 24. Dezember 2007, ebenfalls in der Zeitzone UTC. |
| 2008-02-01T09:00:22+05 | 09:00:22 Uhr am 1. Februar 2008 in einer Zeitzone, die UTC 5 Stunden voraus ist, beispielsweise in der in Pakistan festgelegten Zonenzeit. Dies entspricht 2008-02-01T04:00:22Z, also 04:00:22 Uhr am 1. Februar 2008 in der Zeitzone UTC. |
| 2009-01-01T12:00:00+01:00 | 12:00:00 Uhr am 1. Januar 2009 in Wien (MEZ). |
| 2009-06-30T18:30:00+02:00 | 18:30:00 Uhr am 30. Juni 2009 in Wien (MESZ – Sommerzeit). |
| 2010-01-01T12:00:00.001+01:00 | Eine Millisekunde nach 12:00:00 Uhr am 1. Januar 2010 in Wien (MEZ). |

### Zeitspannen

Eine Zeitspanne wird in dem Format [Startdatum]/P[YY][MM][WW][DD][T[hH][mM][s[.f]S]] dargestellt. Das P zeigt dabei als anführender Informationsbuchstabe an, dass eine Zeitspanne (englisch period) folgt. Zeitspannen, die einen Uhrzeitanteil enthalten, werden wie in der Angabe des Anfangszeitpunktes durch ein T abgegrenzt. Daher sind die Angaben der Monate und Minuten (M) unterscheidbar. Für die Formatierung des Anfangszeitpunktes gelten dieselben Regeln wie für die normale Datumsangabe.
Alternativ können, wenn möglich, Start- und Enddatum getrennt von einem Schrägstrich (/) angegeben werden. Der Standard erlaubt auch die Verwendung von zwei Kurzstrichen (--) statt des Schrägstrichs.

#### Beispiele

* 2005-08-09T18:31:42/P3Y6M4DT12H30M17S: bestimmt eine Zeitspanne von 3 Jahren, 6 Monaten, 4 Tagen, 12 Stunden, 30 Minuten und 17 Sekunden ab dem 9. August 2005 „kurz nach halb sieben Abends“.
* P3Y6M4DT12H30M17S: die gleiche Zeitspanne wie das erste Beispiel, allerdings ohne ein bestimmtes Startdatum zu definieren
* P1D: „Bis morgen zur jetzigen Uhrzeit.“
* PT24H: „Bis in 24 Stunden ab jetzt.“, was im Falle einer Zeitumstellung vom vorherigen Beispiel abweicht
* 2005-08-09/P14W: „Die 14 Wochen beginnend ab dem 9. August 2005.“
* 2005-08-09/2005-08-30: „Vom 9. zum 30. August 2005.“
* 2005-08-09--2005-08-30: „Vom 9. zum 30. August 2005.“
* 2005-08-09/30: „Vom 9. bis 30. August 2005.“

#### Wiederholung von Zeitspannen

Um die Wiederholung einer Zeitspanne zu bezeichnen, wird dieser ein Ausdruck im Format R[n]/ vorangestellt, wobei R (für englisch repeated) die Wiederholung anzeigt und [n] die Anzahl der Wiederholungen angibt. Wird [n] ausgelassen oder der Wert -1 verwendet, gilt die Wiederholung unbegrenzt. Ein Wert von 0 steht für „keine Wiederholung“.
Bei Zeitspannen mit Wiederholung und einem Startzeitpunkt startet die erste Zeitspanne mit dem Startzeitpunkt, bei Zeitspannen mit Endzeitpunkt endet die letzte Wiederholung mit dem Endzeitpunkt.

##### Beispiele

* R2/P1D: Die zwei Zeitspannen „bis morgen“ und „von morgen bis übermorgen“ (jeweils zur jetzigen Uhrzeit).
* R4/2005-08-09/P1D: „Viermal ein Tag ab dem 9. August 2005.“

### Nationale Implementierungen

Die Implementierung in den verschiedenen Staaten erfolgt nach nationalen Standards.

### Geltungsbereich der Jahreszahlen

Die Norm lässt nur die Jahreszahlen von 1583 (dem Jahr nach Einführung des gregorianischen Kalenders) bis 9999 ohne weitere Vereinbarung zu.
* Die Interpretation von Daten vor dem 15. Oktober 1582 ist nicht durch die Norm festgelegt, sie ist daher nur von der getroffenen Vereinbarung abhängig.
* Sowohl zur Verwendung der Jahreszahlen 0000 bis 1582 als auch für die Ausdehnung des Darstellungsformates, mit der ein größerer Bereich von Jahreszahlen darstellbar wird, sind Vereinbarungen der Datenaustauschpartner erforderlich.
* Bei ausgedehnter Darstellung ist die Angabe eines Vorzeichens, auch des positiven, zwingend erforderlich. Die Anzahl etwa zusätzlicher numerischer Stellen ist zu vereinbaren. Beispielsweise ist bei vereinbarten zwei zusätzlichen Stellen der 12. April 1985 im erweiterten Format als +001985-04-12 darzustellen.
* Möglich ist das Vereinbaren der Anwendung des üblichen julianischen Kalenders, die Norm sieht alternativ den proleptischen gregorianischen Kalender vor.

#### Proleptischer gregorianischer Kalender

ISO 8601 sieht die Möglichkeit vor, den gregorianischen Kalender auch für die Zeit vor seiner Einführung am 15. Oktober 1582 anzuwenden, allerdings nur bei entsprechender Vereinbarung zwischen den Datenaustauschpartnern. In diesem proleptischen gregorianischen Kalender existiert im Gegensatz zum julianischen Kalender (siehe Jahr null) das Jahr mit der Bezeichnung „0000“, das ein Schaltjahr ist. In einer ausgedehnten Darstellung nach ISO 8601 entspricht in diesem Fall „–0001“ dem julianischen Jahr 2 v. Chr. usw.