php在夏令时后显示错误的时间

时间:2014-11-03 16:46:45

标签: php date dst

我有一个PHP程序,可以让员工每天进出。由于夏令时,它向用户显示的时间比实际上晚一个小时进出。这是一个例子:

<?php
    echo 'Now:       '. date('h:i:s a') ."\n";
    echo "Timestamp: " . date('U') . "\n";
?>

现在是11:45。它的结果显示为12:45。任何想法为什么会发生这种情况?

修改

上面的代码不是时钟的一部分。这只是我用来表明它给出错误结果的一个例子。时区与结果无关。如果我使用GMT,它仍然比它应该提前一小时。它昨天工作了,所以......

2 个答案:

答案 0 :(得分:2)

将默认时区设置为PHP识别的时区。这是纽约:

date_default_timezone_set('America/New_York');

DST / STD时间将自动处理。

答案 1 :(得分:1)

您将时区设置为“EST”,根据PHP文档中有关时区(http://php.net/manual/en/timezones.others.php)的列表。你不应该使用。

相反,您应该将时区设置为此列表之外的位置(http://php.net/manual/en/timezones.php