Ответ 1
Так как не существует способа настроить определения локалей в Intl
, вам нужно будет найти локаль, которая использует формат ISO 8601. Проверка определений CLDR для формата yMd в Диаграмма по типу: Дата и время: по-григориански, я нашел некоторые, которые напоминают ISO 8601. Однако, поддержка определенных локалей в браузерах или других реализациях JavaScript не гарантируется.
На практике, среди таких локалей в CLDR, fo
(Faroese), кажется, ближе всего к ISO 8601 и поддерживается браузерами. Тестирование с помощью Intl.DateTimeFormat(['foo', 'iso8601'], o)
дает следующие результаты:
2014-7-31 10:26:50 in Chrome
2014-07-31 10:26:50 in Firefox and IE
Таким образом, Chrome не совсем применил правильный формат (как CLDR), и все эти браузеры используют пробел, а не T
в качестве разделителя. Тем не менее, пространство делает презентацию более читаемой, и теперь она считается альтернативной в соответствии с действующим ISO 8601, а именно ISO 8601: 2004, в котором говорится:
4.3.2 ПРИМЕЧАНИЕ. По взаимному согласию партнеров по обмену информацией символ [T] может быть опущен в приложениях, где нет риска запутать представление даты и времени дня с другими, определенными в настоящем стандарте.
Однако, кажется более безопасным использовать обертку, как в вопросе; его не слишком сложно, по сравнению с рисками и неуклюжим характером использования некоторых выбранных локалей. (Даже если fo
поддерживается всеми реализациями, нет никакой гарантии, что власти Фарерских островов не решат изменить определение локали.)