Получить строку часового пояса пользователя с помощью Javascript / PHP?

Я пытаюсь получить часовую зону пользователя в виде строки при сингле. пример:

$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; } 
  1. Вы не можете получить имя часового пояса из смещения. Это потому, что в любой момент времени есть много часовых поясов, которые имеют одинаковое смещение, поэтому вы не можете выбрать один на основе смещения. (Если вы это сделаете, это укусит вас в задницу позже, когда часовой пояс войдет в DST или из него, изменив смещение.
  2. Лучше всего делать геолокацию по IP-адресу (google it, много материала там), как лучшее первое предположение, а затем дать пользователю возможность самостоятельно выбирать свой часовой пояс .