有很多關於在PHP中進行時區調整的信息,但是由於所有的噪音,我還沒有找到具體要做的事情的答案。使用DateTime/DateTimeZone在PHP中調整時區
給定一個時區的時間,我想將其轉換爲另一個時區的時間。
This本質上是我想要做的,但我需要能夠使用只有內置的PHP庫,而不是PEAR日期。
這是我一直在做什麼,但似乎偏移相對於總是給我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相關的所有內容,這也許可以解釋爲什麼它給了我「絕對」的偏移量。
我該如何獲得兩個時區之間的偏移量,但沒有所有GMT hoohah?
謝謝。
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);
但感覺彆扭給我。任何人都知道一個更清潔的方法來做到這一點
順便說一句:),這些是PHP> = 5.3.0。 – GZipp 2009-09-18 22:58:04
他們似乎沒有考慮到DST。即時通訊使用上述功能將CST轉換爲GMT,我所有的時間都在1小時以內。 – 2013-06-07 10:11:55