2017-08-11 257 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%!感谢您编写代码,以便我可以将其作为参考! –