再次:在非对象上调用成员函数setTimezone()

时间:2011-07-27 15:46:36

标签: php datetime object

在添加一些新代码后,我突然收到错误消息Fatal error: Call to a member function setTimezone() on a non-object

首先,我使用DateTime在不同的时间格式之间切换来计算DST等。

我使用了以下代码[代码块1]

foreach ($result as $k=>$v)
    {$timestamp=DateTime::createFromFormat('Y-m-d\TH:i:s.u\Z', $k,new DateTimeZone("UTC"));    //take current date from $k as new DateTile Object
         $timestamp->setTimezone(new DateTimeZone('Europe/Berlin'));   //convert timezone
         $date[]=$timestamp->format('Y-m-d H:i:s');   // "export" the date to date-array
         }

此代码运行良好,直到现在:

我在另一个DateTime函数[代码块2]上面添加了20个代码行:

$ts=new DateTime("@".round($_GET['startdate']/1000));
$startdate=$ts->format('Y-m-d\TH:i:s.u\Z');

在我添加这两行后,我始终收到错误:Fatal error: Call to a member function setTimezone()此行:$timestamp->setTimezone(new DateTimeZone('Europe/Berlin'));

...但我看不到这些与代码部分之间的关​​系/联系?!

这里发生了什么?

谢谢,任何想法。

//更新:正如您在评论中看到的那样,我正在使用PHP 5.3.6 再次:代码块1工作,如果我删除代码块2

1 个答案:

答案 0 :(得分:2)

看起来$result的所有数组键都不是有效的日期字符串。 DateTime类在失败时返回新的DateTime实例或FALSE。当$k无效时,$timestamp为false,这不是对象。