Какой самый простой способ получить UTC-смещение в PHP по отношению к текущему (системному) часовому поясу?UTC Offset в PHP
ответ
date('Z');
возвращает UTC смещение в секундах.
$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);
проверялось, но должно работать
Полезно, если вы используете класс DateTime в PHP 5. Но не я. – 2008-10-11 01:36:40
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 в соответствии с вашими потребностями.
Я сделал слегка измененную версию того, что сделал Оскар.
date_default_timezone_set('America/New_York');
$utc_offset = date('Z')/3600;
Это дало мне смещение от моего часового пояса, EST, до UTC, в часах.
Значение $ utc_offset было -4.
echo date ('P'); // Выведет что-то +02: 00 или -04: 00
Это же JavaScript date.getTimezoneOffset()
функция:
<?php
echo round(date('Z')/-60,2);
?>
Спасибо. К сожалению, PHP требует, чтобы вы вызывали date_default_timezone_set(). Если вы установите его в GMT, ваши даты из базы данных будут по-прежнему в локальное время, но дата («Z») вернет ноль. Если вы установите его в часовой пояс сервера, вы можете просто скорректировать смещение сервера от GMT в включенном файле. Это невероятно, что нет простого способа сделать это. EDIT: Я обнаружил, что вы можете сделать date_default_timezone_set (date_default_timezone_get()). Как асин! – Oscar 2012-07-31 21:25:06
date ('Z') возвращает смещение по часовой стрелке в секундах – Dahomz 2017-05-02 12:29:30
Это возвращает 0. – Adry 2018-02-21 17:14:09