Это мой первый пост здесь, но, надеюсь, я могу кому-то помочь. Я чувствовал себя обязанным, потому что этот сайт мне очень помог. Спасибо стека overflowflow!
http://www.pageloom.com/automatic-timezone-detection-with-javascript
Из того, что я понимаю об этом коде JavaScript, он очень точный и сможет вернуть смещение от UST, соответствующего имени часового пояса базы данных Olson, и обработать проблему перехода на летнее время (например, -5: 00, Америка / Нью-Йорк, правда).
http://www.php.net/manual/en/timezones.america.php
Приведенная выше ссылка является просто списком поддерживаемых php параметров часового пояса, которые, насколько я могу судить, согласуются с этим кодом JavaScript (я уверен, что это полезно, я просто не знаю, почему я все еще пишу свой код и я немного новичок в php / mysql).
Единственное препятствие, с которым вы столкнетесь после того, как этот код заработает на вашей html-странице, - это получение этих значений в php, а затем в mysql, если это то, что вам нужно. Я добился этого, отправив эти значения в виде $ .post с помощью JQuery. Я думаю, что это самый простой способ сделать это (пожалуйста, кто-нибудь поправит меня, если я ошибаюсь). Я полагаю, что другие альтернативы используют команду AJAX (более сложную) или куки (я думаю?).
После того, как я получил значения из кода Java-скрипта на сервер (PHP), я сохранил их как переменные сеанса, чтобы они изменились, если бы пользователь на моем сайте вошел в систему из другого часового пояса, чем обычно. Однако их также можно легко сохранить в базе данных.
Если вы используете маршрут JQuery, он должен находиться в заголовке html-документа, в котором выполняется $ .post.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
Самый обновленный сценарий определения часового пояса можно найти по первому URL, который я разместил.
//replace this comment with the most updated timezonedetect code from that first link
var timezone = jstz.determine_timezone();
var tzoffset = timezone.offset();
var tzname = timezone.name();
var tzdst = timezone.dst();
$.post("scripts/tzdetect.php", { tzoffset: tzoffset, tzname: tzname, tzdst: tzdst } );
Получаемый файл в этом случае tzdetect.php должен выглядеть следующим образом, если вы хотите, чтобы данные сохранялись как переменные сеанса.
<?php
session_start();
$_SESSION['tzname'] = $_POST['tzname'];
$_SESSION['tzoffset'] = $_POST['tzoffset'];
$_SESSION['tzdst'] = $_POST['tzdst'];
?>