2009-02-06 7 views
154

ISO 8601 i RFC 3339 wydają się być dwoma formatami, które są typowe dla sieci. Czy powinienem używać jednego na drugim? Czy to tylko przedłużenie? Czy naprawdę muszę się tym przejmować?Jaka jest różnica między formatami daty ISO 8601 i RFC 3339?

+16

Zmieniono link do RFC z http://www.ietf.org/rfc/rfc3339.txt na wersję HTML pod adresem http://tools.ietf.org/html/rfc3339. Łącząc się z RFC, powinieneś * zawsze * łączyć się z wersjami HTML pod adresem http://tools.ietf.org/html. Nie tylko są łatwiejsze w nawigacji dzięki linkom sekcji, ale, co ważniejsze, listy najwyższych RFC, które zaktualizowały lub przestarzały czytnik RFC, który czytasz. Ludzie bezwiednie cytują przestarzałe RFC przez cały czas w Stack Overflow, i zamierzam powtarzać tę radę, dopóki ten problem nie zniknie. (W celu uniknięcia wątpliwości, * niniejszy dokument RFC nie jest przestarzały). –

Odpowiedz

127

jest jednym tylko rozszerzenie?

Dość dużo, tak - RFC 3339 jest wymieniony jako profil ISO 8601. Przede RFC 3339 wymaga pełną reprezentację daty i czasu (tylko ułamków sekund są opcjonalne). RFC ma również niewielkie, subtelne różnice. Na przykład skrócone reprezentacje lat zawierające tylko dwie cyfry są niedozwolone - RFC 3339 wymaga 4-cyfrowych lat, a RFC zezwala tylko na użycie kropki jako kropki dziesiętnej dla ułamków sekund. RFC pozwala również na zastąpienie "T" spacją (lub innym znakiem), podczas gdy standard pozwala jedynie na pominięcie (i tylko wtedy, gdy istnieje zgoda wszystkich stron używających reprezentacji).

nie będę się zbytnio obawiać o różnicach między nimi, ale na off-szansę Twój przypadek użycia biegnie w nich, że warto poświęcić chwilę biorąc okiem na:

+7

To jest inny sposób, ISO pozwala pominąć "T", ale RFC 3339 nakazuje to http://tools.ietf.org/html/rfc3339#page -12 –

+0

ISO 8601 zawiera również inne, nie tak proste rozszerzenia, takie jak interwały i okresowe powtarzanie punktów czasowych, natomiast RFC 3339 dotyczy tylko znaczników czasowych. Poniższe (zaczerpnięte ze specyfikacji WMS) jest zgodne z prawem ISO, ale nie z RFC: 'Codzienne dane pobierane w południe od 15 kwietnia 1995 r. (Okresowy odstęp): 1995-04-22T12: 00Z/2000-06-21T12: 00Z/P1D' – geira

+11

Przykro mi, ale nie jest to poprawne. Dodatek, do którego się odnosisz, jest wyłącznie informacyjny i ograniczenie ma na celu utrzymanie prostoty gramatyki. Nota na końcu sekcji 5.6 wyraźnie stwierdza, że ​​można wykorzystać spację w celu zachowania czytelności, odnosząc się do wcześniejszej wzmianki o czytelności, która jest przedmiotem sekcji 5.2. aby zacytować: "Aplikacje korzystające z tej składni mogą wybrać, dla zachowania czytelności, określenie pełnej daty i pełnego czasu oddzielonego znakiem (powiedzmy) spacji." –

2

Nie powinieneś się tak przejmować. RFC 3339, sam w sobie, jest zbiorem standardów wywodzącym się z ISO 8601. Jest jednak kilka drobnych różnic i wszystkie one są opisane w RFC 3339. Mógłbym je wszystkie tutaj przejrzeć, ale prawdopodobnie zrobiłbyś lepiej tylko czytanie dokumentu dla siebie w razie jesteś zmartwiony:

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

13

RFC 3339 to przede wszystkim profil ISO 8601, ale jest rzeczywiście niezgodne z nim w zapożyczając „-00: 00” specyfikacji RFC 2822. od strefy czasowej jest to opisane w artykule Wikipedia.