我有存儲在其中包含了在英國的時候設置一個事件的時間我的mysql數據庫中的日期時間字段。在這個時間下面使用的例子是09:00。PHP setTimeZone時區轉換問題 - 特殊性,由於BST(GMT + 1)
我試圖在西海岸和東海岸的美國時區也顯示此時間。
我相信我正確地使用PHP的DateTime「setTimeZone」功能 - 但是回來的結果是一個小時出兩個時區
$online->getTimeByZone('America/Los_Angeles'); // Returns 02:00
$online->getTimeByZone('America/New_York'); // Returns 05:00
public function getTimeByZone($timezone = 'Europe/London') {
$date = $this->getDateField('start_time', 'Y-m-d H:i:s'); // 2017-10-30 09:00:00
$datetime = new DateTime($date, new DateTimeZone('Europe/London'));
$datetime->setTimeZone(new dateTimeZone($timezone));
return $datetime->format('H:i');
}
我從小時的時差這將是假設有關英國觀察夏令時 - 但我本來期望,因爲我開始與「歐洲/倫敦DateTime對象這被分解
任何想法?
你想要哪個時區? –
@Hackit數據庫將存儲「歐洲/倫敦」時間的值。我期待在美國東海岸('America/New_York')和美國西海岸('America/Los_Angeles')轉換並輸出。 這是行得通 - 但是我的功能輸出的時間在凌晨2點和凌晨5點不正確,他們應該是凌晨1點和凌晨4點。 – steve
實際上,2017年10月30日,倫敦不在DST [(它在10月29日結束)](https://www.timeanddate.com/time/zone/uk/london?year=2017),而[New約克](https://www.timeanddate.com/time/zone/usa/new-york?year=2017)和[洛杉磯](https://www.timeanddate.com/time/zone/usa/los -angeles?year = 2017)都在夏令時(在十一月的兩端)。因此,10月30日,倫敦上午9點相當於洛杉磯上午2點和紐約上午5點(由於所有DST規則):https://www.worldtimebuddy.com/?qm=1&lid=2643743, 5128581,5368361和H = 2643743&日期=二○一七年十月三十零日&SLN = 9-10 – 2017-10-18 16:19:26