Я пытаюсь получить часовую зону пользователя в виде строки при сингле. пример:
$timezone = "Asia/Tel_Aviv";
Изучая проблему, я получил способ получить смещение по часовой стрелке с помощью Javascript , но я все еще не понимаю, как я могу перевести смещение часового пояса в строку часового пояса в php, как показано выше?
Или, какой другой метод я использую в Javascript / PHP для получения строки часового пояса для каждого пользователя?
Я действительно не уверен, как подойти к этому.
Вы не можете сделать это только на PHP.
Вы можете использовать Javascript для установки значения в cookie, а затем использовать PHP для чтения файла cookie на следующей странице (re) load.
Javascript:
var dateVar = new Date() var offset = dateVar.getTimezoneOffset(); document.cookie = "offset="+offset;
PHP:
echo $_COOKIE['offset'];
Используйте это, чтобы преобразовать смещение в дружественное имя часового пояса в PHP. Javascript возвращает смещение в минутах, в то время как эта функция PHP ожидает, что вход будет в секундах, поэтому умножьте его на 60. Третий параметр является логическим значением того, находится ли вы в летнее время. Прочтите руководство и обновите код в соответствии с вашими потребностями.
echo timezone_name_from_abbr("", intval($_COOKIE['offset'])*60, 0);
http://php.net/manual/en/function.timezone-name-from-abbr.php
function tzone(){ if(isset($_SESSION["tz"])){ $return = $_SESSION["tz"]; } else { $ip = $_SERVER["REMOTE_ADDR"]; $getip = file_get_contents("http://freegeoip.net/json/$ip"); $getip = json_decode($getip); $lat = $getip->latitude; $lng = $getip->longitude; $country = $getip->country_name; $getzone = file_get_contents("http://api.geonames.org/timezoneJSON?lat=$lat&lng=$lng&username=demo"); //you can change "demo" to your own username. its free service $getzone = json_decode($getzone); $zone = $getzone->timezoneId; $_SESSION["tz"] = $zone; $return = $_SESSION["tz"]; } return $return; }