Php 致命错误:当对象存在时,对非对象调用成员函数diff()?

Php 致命错误:当对象存在时,对非对象调用成员函数diff()?,php,Php,尝试获取两个DateTime对象之间的差异。使用下面的代码,我可以呼出$endSub变量,得到一个字符串,如2012-5-26T00:00:00-04:00,这正是我需要的。但是,如果我没有exit()查看$interval=行上的代码,则标题中会出现错误。有人知道会发生这种情况的原因吗 if ($todays_month >= 6){ $endSub = new DateTime(($startYear+1).'-5-'.$startDay); }else{ $endSu

尝试获取两个DateTime对象之间的差异。使用下面的代码,我可以呼出
$endSub
变量,得到一个字符串,如
2012-5-26T00:00:00-04:00
,这正是我需要的。但是,如果我没有
exit()
查看
$interval=
行上的代码,则标题中会出现错误。有人知道会发生这种情况的原因吗

if ($todays_month >= 6){
    $endSub = new DateTime(($startYear+1).'-5-'.$startDay);
}else{
    $endSub = new DateTime($startYear.'-5-'.$startDay);
}

echo $endSub->format(DATE_RFC3339);
exit();

$interval = $startSub->diff($endSub);

startSub
变量来自哪里?它肯定是原语或null。

startSub变量来自哪里?它肯定是原语或null。

$startSub
不是
$endSub
。我看不到您的代码中任何地方分配了
$startSub
。请给我们您在
startSub
上所做的声明/操作,以便我们可以帮助您?谢谢您的评论。当我发布这篇文章并查看发布的代码时,我意识到我忽略了这一点,然后查看了我的实际代码,发现
$startSub
没有被转换为
DateTime
对象,这是我的问题。但到那时我还不能删除我的帖子。感谢您的快速回复。
$startSub
不是
$endSub
。我看不到您的代码中任何地方分配了
$startSub
。请给我们您在
startSub
上所做的声明/操作,以便我们可以帮助您?谢谢您的评论。当我发布这篇文章并查看发布的代码时,我意识到我忽略了这一点,然后查看了我的实际代码,发现
$startSub
没有被转换为
DateTime
对象,这是我的问题。但到那时我还不能删除我的帖子。谢谢你的快速回复。事实上,这就是问题所在。我一贴出来,就意识到它的类型是
date
,而不是
DateTime
。但当我证实这一点时,已经有了答案。谢谢你的快速回复。一旦强制时间过去,我会将此标记为答案。事实上,这就是问题所在。我一贴出来,就意识到它的类型是
date
,而不是
DateTime
。但当我证实这一点时,已经有了答案。谢谢你的快速回复。一旦强制时间过去,我会将此标记为答案。