2017-08-11 265 views
1

我住在魁北克省,這是在美國東部時區。如何更改夏令時的時間

當我使用

date_default_timezone_set('EST'); 
echo date("m/d/Y h:i:s"); 

我會得到比我目前的一小時的時間不同的時間。

現在,我可以使用

$time = strtotime('+1 hour'); 
echo date("m/d/Y h:i:s",$time); 

我不知道如何讓程序自動時間更改爲夏令時只能手動校正時間。

我聽說date("I")如果在夏天的時候會返回true?

我不確定。

+0

EST是東部標準時間。對於「夏令時」,你可能需要EDT。 – Kevin

+0

您是否嘗試過「America/New_York」或「America/Toronto」(我相信這兩個東方國家),並按照http://php.net/manual/en/timezones.php – DaveCoast

+0

提供的支持時區列表您所在地區的正確時區。試圖手動破解這個不是可取的,因爲根據一天中的小時,你可能會使用strtotime()來錯誤地判斷它。 – mickmackusa

回答

1

EST將是東部標準時間。您正在尋找東部夏令時。最好從the supported locations中選擇您的區域設置,這樣您就不必手動記錄這一點。

例如,這裏是紐約是DST現在(2017年8月11日):

https://3v4l.org/pdeQu

<?php 

echo date_default_timezone_get() . ' : ' . date("m/d/Y h:i:s") . PHP_EOL; 

date_default_timezone_set('EST'); 

echo date_default_timezone_get() . ' : ' . date("m/d/Y h:i:s") . PHP_EOL; 

date_default_timezone_set('America/New_York'); 

echo date_default_timezone_get() . ' : ' . date("m/d/Y h:i:s") . PHP_EOL; 
UTC : 08/11/2017 03:54:07 
EST : 08/10/2017 10:54:07 
America/New_York : 08/10/2017 11:54:07 
+1

你解決了我的問題100%!感謝您編寫代碼,以便我可以將其作爲參考! –