Как определить часовой пояс пользователя в формах регистрации?

StackOverflow https://stackoverflow.com/questions/768007

  •  12-09-2019
  •  | 
  •  

Вопрос

Часовые пояса бывает трудно выбрать из десятков вариантов.Я хотел бы упростить этот процесс.Я видел несколько форм в дикой природе, о которых можно лучше всего догадаться.Я вытаращил глаза в поисках решения, но безуспешно.У кого-нибудь есть идея, как это сделать?

Это было полезно?

Решение

Javascript:

var today = new Date();

alert( today.getTimezoneOffset() );

Это даст смещение (GMT-X), но не фактическое название часового пояса.Имейте в виду, что одно и то же смещение по Гринвичу может соответствовать нескольким часовым поясам, а также необходимо учитывать переход на летнее время.Тем не менее, это, вероятно, самое простое место для начала, если не считать предоставления пользователям возможности выбрать свой часовой пояс из выпадающего списка.

Другие советы

Вы могли бы попытаться определить страну пользователя, сопоставив его IP-адрес с рядом списков.Существуют различные способы достичь этого, но лучший из них - использовать этот API.

Примером использования может быть: http://nl.ae/iptocapi.php?type=1&ip=00.00.00.00.Это вернет код страны этого IP-адреса.Тогда довольно легко сопоставить код страны с часовым поясом.

После того как вы нашли часовой пояс таким образом, вы можете использовать его в качестве значения по умолчанию в выпадающем списке.

Я нашел здесь гораздо лучшее и надежное решение: http://www.onlineaspect.com/2007/06/08/auto-detect-a-time-zone-with-javascript/.

Как объясняет автор, Date.getTimezoneOffset() является непоследовательным.

Вы можете использовать JavaScript чтобы более или менее надежно определить смещение часового пояса.HTTP, насколько мне известно, не предоставляет никаких средств для определения часового пояса клиента на сервере.

С помощью JavaScript:

<input type="hidden" id="visitorTZ" name="visitorTZ" />
<script type="text/javascript">
    d = new Date();
    document.getElementById('visitorTZ').value = d.getTimezoneOffset()/60; 
</script>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top