UTC Offset в PHP

Какой самый простой способ получить UTC-смещение в PHP по отношению к текущему (системному) часовому поясу?

date('Z'); 

возвращает смещение UTC в секундах.

timezone_offset_get()

 $this_tz_str = date_default_timezone_get(); $this_tz = new DateTimeZone($this_tz_str); $now = new DateTime("now", $this_tz); $offset = $this_tz->getOffset($now); 

Непроверенный, но должен работать

эхо-дата ('P'); // выводит что-то +02: 00 или -04: 00

Я сделал слегка измененную версию того, что сделал Оскар.

 date_default_timezone_set('America/New_York'); $utc_offset = date('Z') / 3600; 

Это дало мне смещение от моего часового пояса, EST, до UTC, в часах.

Значение $ utc_offset было -4.

Это же date.getTimezoneOffset() JavaScript:

 <?php echo round(date('Z')/-60,2); ?> 

date("Z") возвращает смещение UTC по отношению к часовому поясу сервера, а не к часовому часовому механизму пользователя. Чтобы получить часовой пояс пользователя, вы можете использовать getTimezoneOffset() javascript getTimezoneOffset() которая возвращает разницу во времени между временем UTC и местным временем в минутах.

 <script type="text/javascript"> d = new Date(); window.location.href = "page.php?offset=" + d.getTimezoneOffset(); </script> 

И в page.php который содержит ваш php-код, вы можете делать все, что хотите, с этим значением смещения. Или вместо перенаправления на другую страницу вы можете отправить значение смещения в ваш php-скрипт через Ajax в соответствии с вашими потребностями.