Я знаю, как получить смещение часового пояса, но мне нужна возможность определять что-то вроде «Америка / Нью-Йорк». Возможно ли это даже из JavaScript, или это то, что мне нужно будет предположить на основе смещения?
javascript
timezone
Майк Томсен
источник
источник
Ответы:
В API Интернационализация поддерживает получение часового пояса пользователя, и поддерживаются во всех современных браузерах.
Имейте в виду, что в некоторых старых версиях браузеров, поддерживающих API интернационализации, для
timeZone
свойства установлено значение,undefined
а не строка часового пояса пользователя. Насколько я могу судить, на момент написания (июль 2017 г.) все текущие браузеры, кроме IE11, будут возвращать часовой пояс пользователя в виде строки.источник
Ответ, получивший наибольшее количество голосов, вероятно, является лучшим способом получить часовой пояс, однако
Intl.DateTimeFormat().resolvedOptions().timeZone
возвращает имя часового пояса IANA по определению, которое находится на английском языке.Если вы хотите, чтобы название часового пояса было на языке текущего пользователя, вы можете проанализировать его из
Date
строкового представления следующим образом:Проверено в Chrome и Firefox.
Конечно, в некоторых средах это не будет работать должным образом. Например, node.js возвращает смещение по Гринвичу (например
GMT+07:00
) вместо имени. Но я думаю, что это все еще можно прочитать как запасной вариант.PS Не будет работать в IE11, как и
Intl...
решение.источник
Вы можете использовать этот скрипт. http://pellepim.bitbucket.org/jstz/
Репозиторий форк или клонов здесь. https://bitbucket.org/pellepim/jstimezonedetect
После того, как вы включите скрипт, вы можете получить список часовых поясов в
jstz.olson.timezones
переменной.И следующий код используется для определения часового пояса клиентского браузера.
Наслаждайтесь jstz!
источник
Получить часовой пояс по названию (например, "Америка / Нью-Йорк")
источник
Intl.DateTimeFormat().resolvedOptions().timeZone
Intl.DateTimeFormat().resolvedOptions().timeZone
возвращаетundefined
, ноmoment.tz.guess()
возвращает правильное значениеВы можете просто написать свой собственный код, используя таблицу сопоставления здесь: http://www.timeanddate.com/time/zones/
или используйте библиотеку моментных часовых поясов: http://momentjs.com/timezone/docs/
Видеть
zone.name; // America/Los_Angeles
или эта библиотека: https://github.com/Canop/tzdetect.js
источник
Это получает код часового пояса (например,
GMT
) в более старом javascript (я использую скрипт приложения Google со старым движком):Я просто кладу это сюда на случай, если кому-то это понадобится.
источник
UTC
/GMT
. Похоже, что другие прописаны; например,Pacific Daylight Time
.Попробуйте этот код, обратитесь отсюда
источник
В javascript метод Date.getTimezoneOffset () возвращает смещение часового пояса от UTC в минутах для текущей локали.
Moment'timezone будет полезным инструментом. http://momentjs.com/timezone/
Преобразование дат между часовыми поясами
источник