Я хочу использовать Intl.DateTimeFormat
для форматирования даты, а в примерах -
// when requesting a language that may not be supported, such as
// Balinese, include a fallback language, in this case Indonesian
Отлично, поэтому я хочу, чтобы мой отказ был ISO 8601 в том случае, если язык не существует
// i.e. the same as/similar to
new Date().toISOString(); // "2014-07-31T02:42:06.702Z"
Однако
// Intl.DateTimeFormat([locales [, options]])
var o = {};
o.year = o.month = o.day = o.hour = o.minute = o.second = 'numeric';
new Intl.DateTimeFormat(['foo', 'iso8601'], o);
// RangeError: Invalid language tag: iso8601
Это похоже на то, что iso8601
не является частью
locales
Строка с тегом языка BCP 47 или массив таких строк.
Я также попытался использовать тот, который я знаю, работает, например. en-GB
с суффиксом u-ca-iso8601
, но это не дает никакого другого результата без суффикса
var f = new Intl.DateTimeFormat(['foo', 'en-GB-u-ca-iso8601'], o);
f.format(new Date());
// 31/7/2014 03:35:26
Почему это не работает? Есть ли даже locale
, который даст мне результат, который я ищу?
Я бы предпочел не писать сложную оболочку, например,
if (Intl.DateTimeFormat.supportedLocalesOf(['foo']).length === 0)