Действительно, это не поддерживается в IE 11. См. Таблицу совместимости Intl , в разделе «DateTimeFormat» затем «resolvedOptions (). TimeZone по умолчанию для среды хоста».
Если вы должны поддерживать IE 11, вам придется прибегнуть к старым методам угадывания часового пояса пользователя.Долгое время единственным надежным методом для этого был jsTimeZoneDetect .Однако он не поддерживается, поэтому я бы не рекомендовал его в наши дни.
Позже, Момент-часовой пояс добавил функцию moment.tz.guess()
.Поскольку это все еще поддерживается в определенной степени, это, вероятно, ваш единственный вариант.
Обе библиотеки будут использовать API Intl
, когда он будет доступен, но затем обратятся к алгоритму, который запрашивает объект Date
для различныхсмещения в определенные ключевые даты перехода на летнее время.Вот почему это «предположение».Обычно он довольно точный или, по крайней мере, близкий, но не всегда может определить точную настройку компьютера пользователя в определенных крайних случаях.
Другим недостатком является то, что эти библиотеки должны отправлять данные часового пояса в браузер,который идет с накладными расходами этого размера данных.Это несколько смягчается за счет использования одного из усеченных файлов данных, таких как moment-timezone-with-data-10-year-range.min.js
.
Если вам не нужно поддерживать IE 11 и более старые браузеры, то вы можете просто напрямую использовать API Intl
, как вы показали в своем вопросе.