Существует много информации о настройке часового пояса в 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, что, возможно, объясняет, почему это дает мне «абсолютное» смещение.
Как мне просто получить смещение между двумя часовыми поясами без всего этого времени, хохаха?
Спасибо.
UPDATE:
Я подумал, что могу сделать это и получить то, что хочу:
$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);
Но мне неловко. Кто-нибудь знает более чистый способ сделать это?