Строки даты в форме "2011-01-27T04: 59: 00Z" - некоторые браузеры принимают их, некоторые нет. Зачем? - PullRequest
3 голосов
/ 26 января 2011

Я получаю строку даты в форме "2011-01-27T04:59:00Z" от вызова веб-службы. Firefox и Chrome без проблем разбирают строку с var d = new Date("2011-01-27T04:59:00Z"), но Safari и IE не будут ее поддерживать.

Я могу сам разобрать строку и передать ее в Date.parse() или Date.UTC(), но мне интересно, почему (1) такое несоответствие существует среди браузеров в чем-то столь простом, как объект Date, и (2) почему общедоступный API возвращает строку даты в формате, который отклонен Safari и (особенно) IE.

1 Ответ

3 голосов
/ 26 января 2011

Для вас два вопроса, я бы сказал:

  1. Это реликт из предоброузерной войны I. Спецификация ECMAScript была написана плохо, и браузер поддерживает все, что они (не) хотятto.
  2. Это формат ISO 8601, изобретенный спустя годы после объекта Javascript Date.Даже в php он был добавлен после php 5.0.Объект даты был оригинальным дизайном в формате RFC 2822.

Исправления в комментариях:

  1. Date.prototype.parse введено без спецификациив котором указывается формат даты, который он должен поддерживать.Даже когда он был стандартизирован в ECMAScript 3 , спецификация не определяла, какой формат даты он должен поддерживать.В декабре 2009 года ECMAScript 5 определил, что Date должен поддерживать формат ISO 8601, как указано в вопросе, однако для выпущенных версий на момент написания этой функции реализовал только Gecko / Firefox.(Webkit был реализован в ночной версии из моего теста)
  2. По неизвестной причине, хотя ISO 8601 был написан в 1988 году, только недавно веб-протоколы / языки программирования начали поддерживать этот формат.PHP поддерживал формат в функции date() только после версии 5. В начале Интернета протоколы использовались, чтобы занять время в формате RFC 822/2822, который удобочитаем для пользователей английского языка.
  3. InПо моему мнению, API должен использовать время Unix для описания времени, если оно предназначено только для машин.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...