Использует ли Intl.DateTimeFormat () `dateStyle` и` timeStyle` формат, определенный в настройках ОС? - PullRequest
0 голосов
/ 25 февраля 2020

Раньше я всегда говорил, что невозможно отобразить дату / время в формате, заданном пользователем в настройках ОС. Например, мой язык / регион может быть EN-US, но я предпочитаю использовать 24-часовой формат времени. Или я, возможно, изменил формат даты short с mm/dd/yyyy на mm/dd/yy.

Изменилось ли это сейчас, когда Intl.DateTimeFormat может использовать значения dateStyle и timeStyle? Примечание: эти опции не поддерживаются во всех браузерах на момент написания этого.

Значения для dateStyle и timeStyle:

  • full
  • long
  • medium
  • short

Эти предопределенные форматы (full, long и др. c) может быть определено пользователем в его системных настройках, например this .

Используют ли значения dateStyle и timeStyle тот же формат, который определен в настройках ОС для значений full, long, et c?

Вот пример. В приведенном ниже фрагменте кода я использовал toLocaleString для отображения текущей даты / времени. Для вариантов я передал dateStyle: 'long' и timeStyle: 'long'. Будет ли при этом использоваться тот же формат, который определен в моих настройках ОС, даже если я изменю «длинный» формат на пользовательский?

const event = new Date();
console.log(event.toLocaleString(undefined, { dateStyle: 'long', timeStyle: 'long', timeZone: 'UTC' }));

1 Ответ

1 голос
/ 26 февраля 2020

Иногда.

Добавление dateStyle и timeStyle является этапом 3 предложение , поэтому они еще не полностью завершены. Тем не менее, вопрос на самом деле не об этих указанных c опциях, а скорее о том, как движок решает получить настройки локали по умолчанию и включает ли он настройки, сделанные пользователем.

Спецификация ECMAscript описывает языковой стандарт по умолчанию, определяемый реализацией c, поэтому решение должно приниматься движком. Подробнее см. В другой ответ .

Имеет смысл использовать настройки ОС пользователя, и Edge так и делает. Однако Chrome и Firefox позволяют пользователю самостоятельно выбирать язык браузера, что приводит к несоответствиям поведения остальной части приложения. Более подробное обсуждение см. В Firefox ошибка 1366136 .

Итак, подведем итог: dateStyle и timeStyle иногда будут учитывать предпочтения ОС пользователя, а иногда - нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...