使用日期和日期时间获得不同的结果

时间:2015-04-01 22:29:10

标签: php date datetime time

我无法理解为什么通过使用date()函数和DateTime对象获得不同的结果。我在Mac上。

date_default_timezone_set('Europe/Sofia');

echo date('Y-m-d h:i:s'); // 2015-04-02 01:18:59 correct

$date = new DateTime('@'.time());  
echo $date->format('Y-m-d h:i:s');  // 2015-04-01 10:18:59 offset

修改

尝试$date = new DateTime('@'.time(), new DateTimeZone('Europe/Sofia')); 没效果

1 个答案:

答案 0 :(得分:2)

date_default_timezone_set()不影响DateTime类,因此您必须使用DateTime中的方法设置它,如下所示:

$date = new DateTime("@".time());  
$date->setTimezone(new DateTimeZone('Europe/Sofia'));
echo $date->format('Y-m-d h:i:s') . "<br>";  

旁注:

通常你也可以这样做:

$date = new DateTime("@".time(), new DateTimeZone('Europe/Sofia')); 

但是由于您使用时间戳,因此出于某种原因这是不可能的。

这已经在错误跟踪器中:https://bugs.php.net/bug.php?id=40743