Настройка часового пояса в PHP с помощью DateTime / DateTimeZone

Там'Есть много информации о настройке часового пояса в PHP, но я не имеюЯ нашел ответ именно для того, что я хочу сделать из-за шума.

Учитывая время в одном часовом поясе, я хочу преобразовать его во время в другом часовом поясе.

это это, по сути, то, что я хочу сделать, но я должен быть в состоянии сделать это, используя только встроенные библиотеки PHP, а не PEAR Date.

Это то, что яя делаю, но это, кажется, всегда дает мне смещение относительно GMT:

$los_angeles_time_zone = new DateTimeZone('America/Los_Angeles');
$hawaii_time_zone = new DateTimeZone('Pacific/Honolulu');

$date_time_los_angeles = new DateTime('2009-09-18 05:00:00', $los_angeles_time_zone);
printf("LA Time: %s<br>", $date_time_los_angeles->format(DATE_ATOM));

$time_offset = $hawaii_time_zone->getOffset($date_time_los_angeles);
printf("Offset: %s<br>", $time_offset);

Это вывод:

Время LA: 2009-09-18T05: 00: 00-07: 00

Смещение: -36000

Я ожидал 3 часа (10800 секунд). но '-7: 00' это мне подсказываетхранит все относительно GMT, что, возможно, объясняет, почемудает мне "абсолютный» смещение.

Как я могу получить смещение между двумя часовыми поясами без всякой этой ухабы по Гринвичу?

Благодарю.

ОБНОВИТЬ:

Я подумал, что могу сделать это и получить то, что хочу:

    $date_time_los_angeles = new DateTime('2009-09-18 05:00:00', $los_angeles_time_zone);
printf("LA Time: %s<br>", $date_time_los_angeles->format(DATE_ATOM));

$date_time_hawaii = new DateTime('2009-09-18 05:00:00', $hawaii_time_zone);
printf("Hawaii Time: %s<br>", $date_time_hawaii->format(DATE_ATOM));


$time_offset = $los_angeles_time_zone->getOffset($date_time_los_angeles) - $hawaii_time_zone->getOffset($date_time_los_angeles);
printf("Offset: %s<br>", $time_offset);

Но мне неловко. Кто-нибудь знает более чистый способ сделать это?

Ответы на вопрос(3)

Ваш ответ на вопрос