Мне интересно, соответствует ли следующая дата ISO8601:
2012-03-02 14:57:05.456+0500
(конечно, 2012-03-02T14:57:05.456+0500 совместимо, но не настолько понятно для человека!) IOW, является ли T между датой и временем обязательным?
Мне интересно, соответствует ли следующая дата ISO8601:
2012-03-02 14:57:05.456+0500
(конечно, 2012-03-02T14:57:05.456+0500 совместимо, но не настолько понятно для человека!) IOW, является ли T между датой и временем обязательным?
Это необходимо, если только «партнеры по обмену информацией» не согласятся его опустить.
Цитируя стандарт ISO 8601, раздел 4.3.2:
Символ [T] должен использоваться в качестве указателя времени для указания начала представления компонента времени суток в этих выражениях. [...]
ПРИМЕЧАНИЕ По взаимному согласию партнеров по обмену информацией символ [T] может быть опущен в приложениях, где нет риска путаницы представления даты и времени суток с другими, определенными в настоящем стандарте.
Его опускают довольно часто, но рекомендуется оставить его, если представление должно быть машиночитаемым, и у вас нет четкого соглашения о том, что вы можете его опустить.
ОБНОВЛЕНИЕ. В комментарии Марка Амери хорошо сказано, что разрешение опустить [T] не обязательно означает разрешение заменить его пробелом. Итак, это:
2012-03-02T14:57:05.456+0500
явно соответствует, и это:
2012-03-0214:57:05.456+0500
разрешено, если партнеры соглашаются опустить [T], но это:
2012-03-02 14:57:05.456+0500
по-видимому, это не так (хотя это гораздо более читабельно, чем версия с просто опущенной [T]).
Лично, если бы требовалось соответствие ISO 8601, я бы включил [T], а если бы это было не так, я бы использовал пробел (или дефис, если он будет частью имени файла). Мое предположение, и это не более того, заключалось в том, что намерение состояло в том, чтобы разрешить замену буквы «Т» пробелом, но стандарт этого не говорит.
См. также RFC 3339, раздел 5.6, упомянутый в ответ Чарльза Бернса.
Эта дата не соответствует 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.
timestamp_header ::= "Timestamp:" date-time
, протокол может определить его как timestamp_header ::= "Timestamp:" full-date " " full-time
.
- person Adam M. Costello; 15.01.2019
_
, было бы намного лучше, чемT
: 2012-03-02_14:57:05.456+0500 - person Rodolfo   schedule 16.12.2019