В дату ISO 8601 обязателен ли символ T?

Мне интересно, соответствует ли следующая дата ISO8601:

2012-03-02 14:57:05.456+0500

(наверняка, 2012-03-02T14: 57: 05.456 + 0500 совместим, но не так много читаемо!) IOW, является ли значение T между датой и временем обязательным?

Ответ 1

Это требуется, если "партнеры по обмену информацией" не согласятся его пропустить.

Цитирование стандарта ISO 8601, раздел 4.3.2:

Символ [T] должен использоваться как указатель времени для обозначения начало представления компонента времени дня в этих выражения. [...]

ПРИМЕЧАНИЕ. По взаимному согласию партнеров по обмену информацией, символ [T] может быть опущен в приложениях, где нет риск запутать представление даты и времени дня с другими определенных в настоящем Международном стандарте.

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

Ответ 2

Эта дата не соответствует ISO-8601, как указал Кейт Томпсон, но соответствует требованиям RFC 3339, профиль ISO 8601. Вроде. См. ПРИМЕЧАНИЕ в нижней части следующего текста из RFC 3339:

date-time       = full-date "T" full-time

  NOTE: Per [ABNF] and ISO8601, the "T" and "Z" characters in this
  syntax may alternatively be lower case "t" or "z" respectively.

  This date/time format may be used in some environments or contexts
  that distinguish between the upper- and lower-case letters 'A'-'Z'
  and 'a'-'z' (e.g. XML).  Specifications that use this format in
  such environments MAY further limit the date/time syntax so that
  the letters 'T' and 'Z' used in the date/time syntax must always
  be upper case.  Applications that generate this format SHOULD use
  upper case letters.

  NOTE: ISO 8601 defines date and time separated by "T".
  Applications using this syntax may choose, for the sake of
  readability, to specify a full-date and full-time separated by
  (say) a space character.