2009-02-06 1 views
154

ISO 8601 и RFC 3339, по-видимому, являются двумя форматами, которые являются общими в Интернете. Должен ли я использовать один над другим? Это просто расширение? Мне действительно нужно заботиться о том, что это плохо?В чем разница между форматами даты ISO 8601 и RFC 3339?

+16

Я изменил ссылку на RFC с http://www.ietf.org/rfc/rfc3339.txt в HTML-версию на http://tools.ietf.org/html/rfc3339. При связывании с RFC вы всегда должны * ссылаться на версии HTML по адресу http://tools.ietf.org/html. Мало того, что они легче перемещаются благодаря ссылкам раздела, но, что важно, они перечисляют в верхней части любые RFC, которые обновили или устарели RFC, который вы читаете. Люди невольно ссылаются на устаревшие RFC все время на Stack Overflow, и я буду продолжать повторять этот совет, пока эта проблема не исчезнет. (Во избежание сомнений, * этот * RFC не устарел.) –

ответ

127

Есть один только расширение?

Довольно много, да - RFC 3339 включен в список профиля ISO 8601. В частности RFC 3339 требует полное представление даты и времени (только доли секунды не являются обязательными). В RFC также есть небольшие, тонкие различия. Например, усеченные представления лет с двумя цифрами не допускаются - для RFC 3339 требуются 4-значные годы, а RFC допускает использование символа периода в качестве десятичной точки для дробных секунд. RFC также позволяет заменить «T» пробелом (или другим символом), в то время как стандарт только позволяет его исключить (и только при наличии согласия между всеми сторонами, использующими представление).

я бы не слишком беспокоиться о различиях между ними, но на авось ваш случай использования бежит к ним, это было бы стоит вашего, принимая взгляд на:

+7

Это наоборот, ISO позволяет omitt 'T', но RFC 3339 обязывает его http://tools.ietf.org/html/rfc3339#page -12 –

+0

ISO 8601 также включает в себя некоторые не простые расширения, такие как интервалы и периодически повторяющиеся временные точки, тогда как RFC 3339 касается только временных меток. Нижеследующее (взятое из спецификации WMS) является юридическим ISO, но не RFC: 'Суточные данные, которые были сделаны в полдень с 15 апреля 1995 года (с периодическим переводом): 1995-04-22T12: 00Z/2000-06-21T12: 00Z/P1D' – geira

+11

Жаль Java Guy, но это не совсем правильно. Приложение, о котором вы говорите, является информационным, и ограничение заключается в том, чтобы упростить грамматику. В примечании в конце раздела 5.6 четко указано, что пространство можно использовать для удобства чтения, ссылаясь на более раннее упоминание читаемости, которое является предметом раздела 5.2. цитируя: «Приложения, использующие этот синтаксис, могут выбирать для удобства чтения полноту и полный рабочий день, разделенные (скажем) пробельным символом." –

2

Вам не должно быть так много заботы. RFC 3339, сам по себе, представляет собой набор стандартов, полученных из ISO 8601. Однако есть несколько минутных различий, и все они изложены в RFC 3339. Я мог бы пройти через все они здесь, но вы, вероятно, только чтение документа для себя в случае, если вы беспокоитесь:

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

13

RFC 3339, в основном профиле ИСО 8601, но на самом деле не согласуется с ним в заимствовании «-00: 00» спецификации часовой пояс из RFC 2822. Это описано в статье Википедии.