| Zu allen Zeiten entstanden lokale Varianten der verschiedensten Dinge. Mit Ausnahme der USA werden mittlerweile lokale Varianten durch international eindeutige ersetzt. | Der Hauptteil dieser Seite ist dem Standard ISO.8601 vorbehalten, der international anerkannte Regeln für die Darstellung von Datum und Zeit definiert. |
Datum & Zeit
|
Schnittpunkt von uralter Kultur und Informationstechnik |
| ISO-8601 | Internationaler Standard für Strings: yyyy-mo-dd hh:mi:ss |
Formatierung von Jahr, Monat und Monatstag |
|
Formatierung der Uhrzeit |
|
Berechnung der Kalenderwoche, Wochentag |
|
Formatierung der lokalen Zeitzone |
|
Formatierung als Jahr-Tag |
|
| W3C DateTime | Teilmenge der ISO-8601 Formate (z.B. für SiteMap) |
| Entwicklung | ISO-8601 in Systemen, Programmen und Programmiersprachen |
| Andere Standards zur Formatierung von Datum und Zeit | |
Überholter deutscher Standard für Strings |
|
Überholter US-Standard für Strings |
|
| Links |
Ausgewählte
|
ISO-8601: Der internationale Standard für Datum-Zeit-Strings |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
►
Die Völker der Erde haben unzählige verschiedene Formen erfunden, um Datum und Zeit
schriftlich auszudrücken. Das ISO-Datum ist der erste und einzige erfolgreiche Versuch,
einen Datum & Zeit-String weltweit einheitlich und eindeutig verständlich zu machen.
►
Der Standard ISO-8601 definiert die Formatierung von Datum und Zeit als String (Text).ISO-8601 (seit 1988) ist gleichlautend mit den Standards EN28601 und DIN 5008 und durch praktisch alle Staaten der Erde anerkannt. Insbesondere in der EU hat sich das Format durchgesetzt. ► Das ISO-Datum ist ein gutes Beispiel für einen Standard, der sowohl für Menschen als auch für die Technik (Informatik) große Vorteile bringt: ► ISO-Daten lassen sich einfacher verarbeiten und sind daher in der Entwicklung billiger, in der Anwendung schneller. Sie lassen sich besser und schneller kontrollieren, sortieren und an verschiedene Anforderungen anpassen. |
►
Es bringt wirtschaftliche Vorteile, diesen Standard einzusetzen: • In der IT-Entwicklung erspart man sich (zumindest in diesem Bereich) die teure nationale Anpassung der Software. Das macht die Entwicklung rascher, sicherer und billiger. • In der IT-Anwendung ist das Risiko von menschlicher Fehl-Interpretation (z.B. in anderen Ländern) deutlich geringer, ebenso das von IT-Fehlern bei Verwaltung, Verarbeitung und Transport von Daten. ► In diesem Web wird der ISO-8601-Standard verwendet, wo immer das möglich ist. Von der großen Anzahl möglicher Varianten wird nur eine kleine Anzahl vorgestellt. Die Anwendung internationaler Standards in einem kleinen nationalen Gebiet ist zwar empfehlenswert, aber nicht unbedingt notwendig. Datum und Zeit-Angaben sind in einem kleinen kulturellen Raum meist auch dann eindeutig, wenn sie in kurioser Form erfolgen, wie z.B. die österreichische Verbal-Variante von 18:40: "fünf vor dreiviertel sieben am Abend". |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Rechts die aktuelle Zeit im ISO-Format ('YYYY-MO-DD hh:mi:ss'): |
yyyy-mo-dd hh:mi:ss
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Vorteile von ISO-8601: |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fixe Hierarchische Reihenfolge► Die Reihenfolge der Bestandteile ist streng hierarchisch: Die größte Einheit (Jahr) staht am Anfang, die kleinste (Sekunden) am Ende. Solche Strings werden von jedem Programm in jedem Betriebssystem richtig sortiert. - Diese wichtige Eigenschaft erfordert keinerlei sonstige Maßnahmen und trifft nur (!) auf das ISO-Format zu. |
► Deshalb kann das ISO-Datum auch als Bestandteil von Dateinamen gut eingesetzt werden: Dokumente mit Namen wie 'name_20010203.doc' werden von jedem (!) Betriebssystem automatisch in der chronologischen Reihenfolge sortiert. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Variable Genauigkeit:► Wenn geringere Genauigkeit ausreicht, kann das Format gekürzt werden, z.B. auf das Datum (10 Zeichen). Nicht benötigte Daten werden einfach weggelassen.2001-02-03
|
► Bei höheren Ansprüchen an Genauigkeit kann das Format ergänzt werden. Das erfolgt durch Angabe eines Komma-Punktes nach den Sekunden und beliebig vieler Kommastellen danach.
0000-00-00 00:00:00.123
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Fixe Länge und Position aller Teile
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
►
Der Standard ISO-String hat immer die gleiche Länge von 19 Zeichen.
Jeder Bestandteil hat darin seine fixe Position: Achten sie darauf, Zahlen<10 immer mit führenden Nullen zu formatieren ! ► Strings fixer Länge bieten in der IT bedeutend mehr Sicherheit gegen Interpretations-Fehler als solche mit variabler Länge. Die fixe Position erleichtert und beschleunigt die Codierung und Decodierung (z.B. mit → Regulären Ausdrücken). |
►
Die Umwandlung zwischen Strukturen ganzer Zahlen
(Jahr, Monat, Tag, Stunde, Minute, Sekunde jeweils als ganze Zahl) und dem
ISO-Datum erfolgt besonders rasch und einfach. Das gleiche gilt für
→
XML-Daten und den ISO-Standard. ► Auch in Varianten mit kleinerer oder größerer Genauigkeit hat jeder Bestandteil (wenn vorhanden) die gleiche Position wie im Standard ISO-String. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
'Umstellung' auf ISO-8601► ISO-8601 ist ein 'erfundener' Standard. Daher ist die Umstellung nicht durch Nationalstolz gefährdet: Niemand muss die Formatierung eines anderen Volkes annehmen, das Format ist für alle gleich 'neu'.► Je größer und internationaler eine Organisation, desto früher und leichter der Umstieg auf einheitliche Normen. Dafür sorgt schon der finanzielle Vorteil. ► Bei Armeen und in einigen Berufsgruppen ist dieses Datum-Format weltweit schon lange in Gebrauch. |
► Allerdings ist auch die Einstellung anzutreffen, alte Gewohnheiten aus keinem vernünftigen Grund aufzugeben. Immerhin werden in den USA auch Gallonen, Meilen, Fu0 und Zoll zäh verteidigt. Die Umstellung wird umso teurer, je weiter sie hinausgezögert wird. ► Schon eher verständlich die Haltung des IT-Marktführers, der viel Geld mit der Einstellung verdient, freie internationale Standards nach Möglichkeit zu ignorieren. Das funktioniert, solange die KundInnenen mitmachen und dafür auch noch zahlen. In einigen Publikationen (z.B. Wikipedia) wird nicht der ISO-Standard verwendet sondern der deutsche Monatsname ausgeschrieben. Das ist (Januar / Jänner) nicht einmal im deutschen Sprachraum eindeutig. Da Wiki-Texte für jede Sprache in eigene Webseiten übersetzt werden, ist die Eindeutigkeit trotzdem kein Problem. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ISO-8601 in Standard-Programmen:OpenOffice kennt das ISO-Format für Datum, für Zeit, jedoch leider nicht für Datum und Zeit zusammen. Immerhin lässt es sich als BenutzerIn-spezifisches Format 'JJJJ-MM-TT HH:MM:SS' eingeben. |
Menü Dieses Format kann man auch als BenutzerIn-spezifisches Format 'JJJJ-MM-TT hh:mm:ss' eingeben. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Datum nach ISO-8601 |
|
|
•
Der ISO-Text beginnt immer mit dem Datum. • Jahr-Monat-Monatstag sind in fallender Reihenfolge angeordnet. • Das Jahr wird immer 4-stellig angegeben, Monat und Tag immer 2-stellig mit führender Null. • Als Trennzeichen wird das - Minus-Zeichen verwendet. • Das ergibt eine konstante Länge von 10 Zeichen für das ISO-Datum |
In der ISO-Form ist das Datum weltweit eindeutig und unmissverständlich formatiert. Das ist ein weseentlicher Vorteil des ISO-Standards - besonders im Vergleich zum veralteten deutschen → DIN-5008 Standard oder gar zu den chaotischen Varianten der US → RFC-822-Formate. |
Kompakt-Variante ohne Trennzeichen:Bei fixer Einhaltung der Reihenfolge und der Stellen-Anzahl können die Trennzeichen optional wegfallen.
yyyymoddhhmiss
|
Kompakt-Variante
yyyymodd
•
Dieses Format wird von einigen Programmen
(z.B.
→ MySQL) verwendet, ist jedoch für Menschen unübersichtlich.• Man kann die Daten sogar platzsparend als eine (!) ganze Zahl (Integer/Long) speichern, jedoch nicht damit rechnen ! |
KalenderEs ist nicht sicher, ob der ISO-Standard fix an einen → Kalender gebunden ist.De facto wird er für aktuelle Daten nur mit dem weltweit dominierenden Gregorianischen Kalender verwendet. |
• Bei historischen Angaben wird normalerweise bis 1582 der Julianische Kalender (nach Julius Caesar) verwendet und danach der Gregorianische (nach Papst Gregor XIII). • Einige Staaten stellten ihre Kalender jedoch erst viel später um, z.B. USA 1752, Türkei 1926), daher sind historische Daten dieser Staaten erst nach entsprechender Korrektur vergleichbar. |
Kalenderwoche und Wochentag nach ISO-8601 |
|
|
Auch die Definition der 7-Tage-Woche sowie der Wochen-Anfang am Montag sind im ISO-Standard festgelegt. ISO-Definition der → Kalenderwoche: Definition:Die erste Kalenderwoche eines Jahres ist jene Woche, welche als erste mehrheitlich (>=4 Tage) in das neue Jahr fällt. |
Syntax der Kalenderwoche nach ISO-8601:
1997-W01
für die Woche 1996-12-30 bis 1997-01-05Die Wochentag-Nummer kann angehängt werden, z.B. für heute Wochentag: 1997-W01-2
|
| Auch für die Kalenderwoche gibt es kompakte Formate ohne Trennzeichen. Diese Texte (Strings) sollten jedoch nur intern eingesetzt werden, da sie für Menschen weniger gut lesbar sind und daher zu unnötigen Fehlern führen können. |
Kompakt-Format der aktuellen Kalenderwoche:
yyyyWww
yyyyWwwd
|
|
Da es nur ganze 7-Tages-Wochen gibt, kommt es am Jahreswechsel oft zu Überschneidungen:
Die W52 des Vorjahrs reicht noch <=3 Tage in das Neue Jahr,
oder W01 reicht <=3 Tage zurück ins alte Jahr. Achtung: In den USA wird die Kalenderwoche nach einem anderen Algorithmus berechnet. In manchen ! Jahren ergeben beide Algorithmen für Arbeitstage das gleiche Ergebnis. |
♦ Details zur Berechnung von ISO-KW und US-Kalenderwochen, Algorithmen, Programm-Beispiele, etc. |
Zeitzone und Weltzeit UTC nach ISO-8601 |
|
Weltzeit UTCISO-8601 bietet auch eine Möglichkeit für die Angabe der → Zeitzone:Ein nachgestelltes Zeichen "Z" steht für die Weltzeit → UTC ("Zulu Time"). hh:mi:ssZ
hhmissZ
hhmiZ
|
Lokale ZeitZur Charakterisierung der lokalen Zeit geben sie den Unterschied zur UTC in Stunden:Minuten mit Vorzeichen nach der Uhrzeit an:
12:00Z = 13:00+01:00
|
|
Seit ihrer Einführung ist die Angabe der Zeitzone keine eindeutige Aussage mehr ! Außerhalb der EU, jedoch innerhalb der gleichen Zonen gibt es Gebiete mit und ohne Sommerzeit, bzw. wird der Zeitpunkt der Umstellung nach unterschiedlichen Algorithmen berechnet. Darüber hinaus werden die Sommerzeit-Regeln jedes Jahr von einigen Staaten und Bundesstaaten geändert. Das führt vor allem bei jüngeren historischen Daten zu chaotischen Zuständen. |
Deshalb gibt man an Stelle der Zeitzone den momentanen Abstand zur Weltzeit UTC an,
z.B. in Mitteleuropa bei Normalzeit +01:00, bei Sommerzeit +02:00. |
Word Wide Web Consortium (W3C) DateTime Format |
|||||||||||||||
|
Das World Wide Web Consortium definierte 1998 eine Teilmenge der ISO-8601 Formate
zur Verwendung in Web Applikationen. Der Standard ist international etabliert, wird jedoch offenbar aus Rücksicht auf die USA (komplizierte RFC-822-Formate) nur als 'Diskussion' bezeichnet... ► Diese Formate sind für die automatische Verarbeitung von Datum- und Zeit Texten (Strings) besonders geeignet. |
W3C DateTime Formate (unverbindlich)
|
||||||||||||||
|
Die DateTime-Auswahl verwendet ausschließlich fixe Länge aller Komponenten,
d.h. Jahr 4stellig, alle anderen 2stellig mit führender Null. Anwendung u.a. in einer Standard (Google) SiteMap. |
Die Weltzeit UTC wird mit "Z" angegeben, bei Lokalzeit wird der Abstand
zur UTC angeführt (in Mitteleuropa +01:00, bei Sommerzeit +02:00). Das genaueste Format (mit Sekunden und -Bruchteilen) wird in der Praxis nicht verwendet. |
||||||||||||||
Programmierung von ISO-8601-Strings |
|
Zelle markieren, Menübefehl. |
Zelle markieren, Menübefehl. |
Linux Shell-Konsole
# date --rfc-3339="seconds"
Wenn sie ein Alias anlegen, z.B.
# date "+%Y-%m-%d %H:%M:%S" # alias isodate='date "+%Y-%m-%d %H:%M:%S"'
dann können sie das aktuelle ISO-Datum anzeigen:
# isodate
♦ Details zu Datum & Zeit @ Linux |
Windows-Konsole (cmd.exe)
C:\> date /T
Keine ISO-Formatierung, kann aber programmiert werden.C:\> time /T ♦ Details zu Datum & Zeit @ Windows, CygWin |
C++Die Version 1999 der Programmiersprache C entspricht dem ISO-Standard mit der Funktion strftime() mit format specifier "%Y-%m-%d %H:%M:%S". ♦ Details zu Datum & Zeit @ C/C++ |
JavascriptLeider ist keine Standard-Funktion zur ISO-Formatierung eines Datum-Zeit Objekts verfügbar.Eine eigene Funktion kann jedoch einfach erstellt werden. ♦ Details zu Datum & Zeit @ Javascript |
Perl
use POSIX;
♦ Details zu
Datum & Zeit @ Perl
$s = "%Y-%m-%d %H:%M:%S"; $iso = strftime($s, localtime(time())); |
PHP
$s = "%Y-%m-%d %H:%M:%S";
♦ Details zu
Datum & Zeit @ PHP
$iso = strftime($s,time()); |
VBALeider keine Standard-Funktion zur ISO-Formatierung. Angesichts des gestörten Verhältrnisses des Herstellers zu Standards aller Art ist das kein Wunder. |
Eine eigene Funktion kann jedoch einfach erstellt werden. ♦ Details zu Datum & Zeit @ VBA |
DecodierungEiner der wichtigsten Vorteile ist die einfache Aufspaltung eines ISO-8601 Strings zur Validierung (Datum zulässig ? ) und Interpretation (welches Datum ?).Am besten eignen sich dazu → Reguläre Ausdrücke (RegExp). ♣ Stellen sie zuerst die Variante fest. Sie ist im Idealfall vorgegeben. Ansonsten wird meist yyyy-mo-dd hh:mi:ss (evtl. mit weniger Bestandteilen) verwendet, seltener das Kompakt-Format ohne Trennzeichen oder die Spezialformate für Tag des Jahres, Kalenderwoche oder Tag der Woche. ♣ Isolieren sie die Text-Bestandteile und wandeln sie die Ergebnisse in Zahlen um. Im Beispiel wird zuletzt aus den Teil-Ergebnissen ein Date-Objekt zur weiteren Verarbeitung erzeugt. |
Live Javascript-Beispiel (vereinfacht):
var iso = "yyyy-mo-dd hh:mi:ss";
Live-Test
mit ihrem PC & Browser.var dt = null; if (iso.match(/(\d+)-(\d+)-(\d+) (\d+):(\d+):(\d+)/)) {
dt=new Date(RegExp.$1, RegExp.$2-1, RegExp.$3, RegExp.$4, RegExp.$5, RegExp.$6);
}alert ("dt="+dt); alert (dt.toLocaleString()); ♦ Details und Beispiele zu Regulären Ausdrücken (RegExp). |
|
|
|
uhrzeit.org (de) wiki NTP webhome (en) US Naval Observatory (USNO) Metrologie.at (de) Calendarzone |
Wikipedia:
Datumsformat,
ISO-8601,
|
Word Wide Web Consortium (W3C):
ISO-8601,
Date & Time Formats,
Q&A,Univ. Cambridge (en) ISO-8601 (Markus Kuhn) Yahoo-Gruppe ISO8601 IDFC ISO-8601 Campaign UNECE-Recommendation Date, Time & Periods of Time (pdf) |
Glossary of Frequency and Timing Terms FAQs des NIST Colorado, USA Yahoo Science:Measurements and Units:Time Links U.S. Naval Observatory USNO International Earth Rotation Service (IERS) Network Time Protocol (NTP) USENET sci.astro FAQs Tondering Calendar FAQs Univ. Delaware (EECIS) Jukka Korpela: Info on ISAO-8601 ... Hydra Centaurus: ISO-8601 (Gary Houston) |
|