unix时间戳错误的php DateTime对象 - bug?

时间:2011-10-07 02:34:40

标签: php datetime unix-timestamp

偶然发现这个奇怪的错误与php的DateTime对象... 看看这个:

<?php
$date = 1335823200;
echo date('d',$date);
echo '<br />';
$date = new DateTime("@$date");
echo $date->format('d');
?>

返回:

06
05

任何时间戳都不会发生这种情况。我怀疑它与不同的时区有关,但是玩setlocale()并没有任何帮助。顺便说一句,需要使用DateTime中的'@'来使用unix时间戳(请参阅错误报告here)。这里还有几个测试时间戳:

1333663200
1338588000
1338847200

1 个答案:

答案 0 :(得分:2)

由于您没有为DateTime指定时区,因此它应该是UTC,而date尊重当前时区(由date_default_timezone_set指定或取自{{1} }})。只需执行此操作即可:

php.ini