Получение часового пояса с использованием Intl API не работает в Firefox:

Я использую Intl API. В Chrome:

 Intl.DateTimeFormat().resolved.timeZone

Возвращает "Европа / Лондон"

В Firefox это возвращение undefined, хотя Firefox поддерживает Intl.

Как я могу получить часовой пояс с Firefox?

1 ответ

Решение

Технически, более правильное заклинание:

Intl.DateTimeFormat().resolvedOptions().timeZone

К сожалению, не все реализации в настоящее время поддерживают функции часового пояса Intl API. Таким образом, хотя это вернет действительный часовой пояс IANA в Chrome, этого еще не будет сделано в FireFox и некоторых других браузерах.

В таблице совместимости kangax Intl эта функция отображается в виде подпункта под DateTimeFormat объект помечен resolvedOptions().timeZone defaults to the host environment,

Смотрите следующие рабочие элементы FireFox:

  • Ошибка 1158733 - Определение часового пояса системы из API интернационализации Javascript
  • Ошибка 895737 - DateTimeFormat не отслеживает текущий часовой пояс
  • Ошибка 837961 - добавлена ​​поддержка имен часовых поясов IANA в API интернационализации

Между тем, есть две жизнеспособные альтернативы:

  • jsTimeZoneDetect - который ориентирован исключительно на задачу угадывания часового пояса.
  • момент-часовой пояс - это дополнение к популярной библиотеке moment.js и содержит API moment.tz.guess() попытаться угадать часовой пояс пользователя.

Обратите внимание, что оба они будут внутренне пытаться использовать Intl API, если он доступен и работает, прежде чем пытаться использовать дополнительные алгоритмы угадывания.

Также обратите внимание, что рекомендуется никогда не полагаться исключительно на обнаружение / угадывание часового пояса, а использовать его для выбора разумного значения по умолчанию из элемента управления выбора часового пояса. Всегда дайте пользователю способ выбрать желаемый часовой пояс. Это важно, так как часовой пояс, на котором в данный момент установлен компьютер, может быть или не быть часовым поясом, который они хотели бы использовать в вашем приложении. Например, для программного обеспечения для ведения календаря в Интернете (такого как Google Calendar или Outlook.com) обычно разрешается устанавливать часовой пояс в своем профиле пользователя.

Другие вопросы по тегам