PHP date timestamp часовой пояс не преобразован должным образом

Итак, у меня есть этот код:

$timestamp = 1414708099;
echo $timestamp;
$date = date_make_date($timestamp, 'UTC', 'datestamp');
date_timezone_set($date, timezone_open('America/New_York'));
$timestamp = $date->format('U');
echo '<br>';
echo $timestamp;

который должен конвертировать часовой пояс начальной метки времени из UTC в нью-йорк.

но потом это заканчивается печатью

1414708099<br>1414708099

следовательно, часовой пояс не изменился …

что я сделал не так?

Кстати, он также использует Drupal 6 date_api.module: http://drupalcontrib.org/api/drupal/contributions!date!date_api.module/function/date_make_date/6

0

Решение

Согласно комментариям

Временная метка всегда UTC. Вы не можете применить часовой пояс к временной метке — считайте его часовой пояс равным 0. Что бы вы ни делали, оно остается равным 0. Вы запросили дату, отформатированную с помощью U — manual, заявляет это:

U: Секунды с начала Unix (1 января 1970 г., 00:00:00 по Гринвичу).

Вы не можете получить секунды от Unix Epoch для Нью-Йорка. Это число одинаково для любого места в мире.
Теперь, если бы вы отформатировали эту дату, используя, скажем, $date->format('Y-m-d H:i:s') тогда вы получите правильно отформатированное время со смещением часового пояса для Нью-Йорка.

Короче говоря, здесь нет никаких проблем. Все работает как задумано.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]