PHP夏令时总是错误的

时间:2017-03-23 12:52:58

标签: php date timezone

我想知道日期是否在夏令时。

所以我这样做:

echo date('I', strtotime('2017-03-23')); // outputs 0
echo date('I', strtotime('2017-03-29')); // outputs 0

我预计这两个输入会有不同的结果,因为英国的开关是2017年3月26日,但两种情况下的输出都是0。

我已经检查过,时区看起来是正确的:

echo date_default_timezone_get(); // outputs UTC

1 个答案:

答案 0 :(得分:3)

正如您在this answer中看到的,UTC没有夏令时,您需要将时区设置为Europe/London

date_default_timezone_set('Europe/London'); 
echo date('I', strtotime('2017-03-23')); // echoes 0
echo date('I', strtotime('2017-03-29')); // echoes 1

date_default_timezone_set('UTC'); 
echo date('I', strtotime('2017-03-23')); // echoes 0
echo date('I', strtotime('2017-03-29')); // echoes 0