Javascript: Firefox игнорирует параметры dateStyle и timeStyle в Date.toLocaleString и Intl.DateTimeFormat - PullRequest
0 голосов
/ 14 февраля 2020
console.log(Intl.DateTimeFormat(undefined, {timeStyle: "long", dateStyle: "long"}).format());

Chrome говорит: «13 февраля 2020 года в 7:33:18 EST».

Firefox говорит: «2/13/2020»

Firefox также игнорирует dateStyle и timeStyle при использовании toLocaleString.

var date = new Date();
console.log(date.toLocaleString(undefined, {timeStyle: "short", dateStyle: "short"}));
console.log(date.toLocaleString(undefined, {timeStyle: "medium", dateStyle: "medium"}));
console.log(date.toLocaleString(undefined, {timeStyle: "long", dateStyle: "long"}));

Все эти строки дают тот же результат в Firefox: «13.02.2020, 20:04:11». Chrome правильно дает разные значения.

Что происходит? Как получить строку даты с правильным языковым стандартом в Firefox?

Редактировать: Очевидно, Firefox не поддерживает эти свойства.

1 Ответ

2 голосов
/ 14 февраля 2020

Опции dateStyle и timeStyle по-прежнему находятся в состоянии предложения (стадия 3).

Браузеры пока не вынуждены его реализовывать и вполне могут захотеть подождать чтобы спецификации стабилизировались до реализации этого.

В настоящее время вы все еще можете использовать параметры по умолчанию, чтобы получить менее естественный, но все еще локализованный результат:

const supports = testDateTimeStyleSupport();

const opts = supports ? { dateStyle: "long", timeStyle: "long" } : {
  weekday: 'long',
  year: 'numeric',
  month: 'long',
  day: 'numeric',
  hour: "numeric",
  minute: "numeric",
  second: "numeric"
}

console.log( new Intl.DateTimeFormat( undefined, opts ).format() );

// assumes both are supported or none
function testDateTimeStyleSupport() {
  let support = false;
  const tester = {
    get dateStyle() { support = true; }
  };
  new Intl.DateTimeFormat( undefined, tester );
  return support;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...