字符串 DateTime::diff 上的致命错误

Fatal error on DateTime::diff on string

我很清楚这里还有其他问题和答案,我一直在研究它们: Calculate number of hours between 2 dates in PHP

但我仍然找不到解决问题的办法。 这是场景: 我正在使用 Google 日历 Api。我有一个 foreach() 循环 运行,它捕获事件的 dateTime()。 我想得到开始时间和结束时间的差异。我的代码如下:

$neweventDateStr = new DateTime($event->start->dateTime);
$neweventDateEnd = new DateTime($event->end->dateTime);
$diff = $eventDateEnd->diff($neweventDateStr);

但是我在最后一行收到以下错误:

Fatal error: Call to a member function diff() on string

我检查过,两个变量都被识别为 dateTime 对象。 因此我无法弄清楚为什么会给我上面列出的错误。 关于这是为什么的任何线索?

注意,代码:

$event->start->dateTime 

Returns 来自 google 服务器的日期和时间值作为 dateTime RFC 3339 格式:来源: https://developers.google.com/google-apps/calendar/v3/reference/events

它 returns 值是这样的:

$event->start->dateTime = 2015-07-06T14:30:00+02:00 
$event->se->dateTime = 2015-07-06T15:30:00+02:00

我尝试过:

echo $neweventDateStr;

并且我 returns 错误(正如预期的那样)变量无法转换为字符串,因为它是 dateTime 对象格式。

问题出在你的代码中:-

     $diff = $eventDateEnd->diff($neweventDateStr);

应该是:-

$diff = $neweventDateEnd->diff($neweventDateStr); // because no where $eventDateEnd is defined.

举例如下:-

<?php
 $neweventDateStr = new DateTime('2015-04-04 10:10:10');
 $neweventDateEnd = new DateTime('2015-04-10 10:10:10');
 $diff = $neweventDateEnd->diff($neweventDateStr); // instead of $eventDateEnd i write $neweventDateEnd
 print_r($diff);
 ?>

输出:-https://eval.in/393320