2008-10-11 3 views
26

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

ответ

59
date('Z'); 

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

+1

Спасибо. К сожалению, PHP требует, чтобы вы вызывали date_default_timezone_set(). Если вы установите его в GMT, ваши даты из базы данных будут по-прежнему в локальное время, но дата («Z») вернет ноль. Если вы установите его в часовой пояс сервера, вы можете просто скорректировать смещение сервера от GMT в включенном файле. Это невероятно, что нет простого способа сделать это. EDIT: Я обнаружил, что вы можете сделать date_default_timezone_set (date_default_timezone_get()). Как асин! – Oscar 2012-07-31 21:25:06

+0

date ('Z') возвращает смещение по часовой стрелке в секундах – Dahomz 2017-05-02 12:29:30

+0

Это возвращает 0. – Adry 2018-02-21 17:14:09

16

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); 

проверялось, но должно работать

+0

Полезно, если вы используете класс DateTime в PHP 5. Но не я. – 2008-10-11 01:36:40

-2

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

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

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

10

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

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

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

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

11

echo date ('P'); // Выведет что-то +02: 00 или -04: 00

1

Это же JavaScript date.getTimezoneOffset() функция:

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