我已经这样定义了这段代码(为了清楚起见,简化版本):
$fifteenMinsLater = strtotime('+900 second', time());
$now = time();
if ( $now > $fifteenMinsLater ) {
mtrace("This should NEVER happen");
}
else {
mtrace("This should always be the case");
}
2013 年 3 月 11 日凌晨 2:00,美国/纽约的夏令时结束,时钟倒转一小时到凌晨 1:00。
当我在 2013 年 11 月 3 日以及凌晨 1:00 和凌晨 2:00 之间的 DST 结束后(即凌晨 2:00 变为凌晨 1:00)运行上述代码时,该行:
This should NEVER happen
被打印。但是,在 DST 转换之前或新的凌晨 2:00 之后的任何时间都很好。
这导致了一个重大错误,导致用户尝试访问使用上述代码的功能,在 DST 转换后的一小时内惨遭失败。
PHP 5.2.11。
有任何想法吗 ?