2009-02-06 5 views
154

ISO 8601 und RFC 3339 scheinen zwei Formate zu sein, die im Web üblich sind. Soll ich eins über das andere benutzen? Ist man nur eine Erweiterung? Muss ich mich wirklich so sehr darum kümmern?Was ist der Unterschied zwischen den Datumsformaten ISO 8601 und RFC 3339?

+16

Ich habe den Link zum RFC von http://www.ietf.org/rfc/rfc3339.txt in die HTML-Version unter http://tools.ietf.org/html/rfc3339 geändert. Wenn Sie RFCs verlinken, sollten Sie * immer * auf die HTML-Versionen unter http://tools.ietf.org/html verlinken. Sie sind nicht nur dank Abschnittslinks einfacher zu navigieren, sondern, ganz wichtig, führen sie RFCs auf, die den RFC, den Sie gerade lesen, aktualisiert oder veraltet haben. Die Leute nennen unwissentlich veraltete RFCs auf Stack Overflow, und ich werde diesen Rat immer wieder wiederholen, bis das Problem weg ist. (Zur Vermeidung von Zweifeln ist * diese * RFC nicht veraltet.) –

Antwort

127

Ist man nur eine Erweiterung?

Ziemlich viel, ja - RFC 3339 aufgeführt wird als Profil von ISO 8601. Am bemerkenswertesten RFC 3339 erfordert eine vollständige Darstellung von Datum und Uhrzeit (nur Sekundenbruchteile sind optional). Der RFC hat auch einige kleine, feine Unterschiede. Zum Beispiel sind abgeschnittene Darstellungen von Jahren mit nur zwei Ziffern nicht erlaubt - RFC 3339 erfordert 4-stellige Jahre, und der RFC lässt nur ein Punktzeichen als Dezimalpunkt für Sekundenbruchteile zu. Der RFC ermöglicht auch, dass das "T" durch ein Leerzeichen (oder ein anderes Zeichen) ersetzt wird, während der Standard es nur erlaubt, es auszulassen (und nur dann, wenn eine Übereinstimmung zwischen allen Parteien besteht, die die Repräsentation verwenden).

Ich würde nicht zu viel über die Unterschiede zwischen den beiden Sorge, aber auf der off-Chance Ihren Anwendungsfall, um sie in läuft, würde es sein lohnt sich, einen Blick auf nehmen:

+7

Es ist die andere Möglichkeit, ISO erlaubt zu "T" zu umgehen, aber RFC 3339 mandates es http://tools.ietf.org/html/rfc3339#page -12 –

+0

ISO 8601 enthält auch einige nicht so einfache Erweiterungen wie Intervalle und sich periodisch wiederholende Zeitpunkte, während RFC 3339 nur Zeitstempel behandelt. Das folgende (aus der WMS-Spezifikation) ist ein gültiges ISO, aber kein RFC: 'Tägliche Daten, die seit dem 15. April 1995 mittags genommen wurden (periodisches Intervall): 1995-04-22T12: 00Z/2000-06-21T12: 00Z/P1D' – geira

+11

Sorry Java Guy, aber das stimmt nicht ganz. Der Anhang, auf den Sie sich beziehen, dient nur der Information, und die Einschränkung dient der Vereinfachung der Grammatik. In der Anmerkung am Ende von Abschnitt 5.6 heißt es eindeutig, dass ein Leerzeichen aus Gründen der Lesbarkeit verwendet werden kann, was sich auf die frühere Erwähnung der Lesbarkeit bezieht, die Gegenstand von Abschnitt 5.2 ist. um zu zitieren: "Anwendungen, die diese Syntax verwenden, können aus Gründen der Lesbarkeit wählen, ein Volldatum und Vollzeit getrennt durch (sagen wir) ein Leerzeichen anzugeben." –

2

Sie sollten sich nicht so viel kümmern müssen. RFC 3339 ist, nach sich selbst, eine Reihe von Standards, die von ISO 8601 abgeleitet sind. Es gibt jedoch ein paar Minuten Unterschiede, und sie sind alle in RFC 3339 beschrieben. Ich könnte sie alle hier durchgehen, aber Sie würden wahrscheinlich besser machen nur das Lesen, das Dokument selbst im Fall, dass Sie besorgt sind:

http://www.ietf.org/rfc/rfc3339.txt

13

RFC 3339 ist meist ein Profil von ISO 8601, sondern ist damit eigentlich inkonsequent in Anleihen die "-00: 00" Zeitzone Spezifikation von RFC 2822. Dies ist in dem Wikipedia-Artikel beschrieben wird.