我在这里很清楚地知道还有其他问题和答案,我一直在经历这些问题和答案: Calculate number of hours between 2 dates in PHP
但我仍无法找到问题的解决方案。
这是场景:
我正在使用Google Calendar 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
将Google服务器的日期和时间值作为dateTime RFC 3339格式返回:source: https://developers.google.com/google-apps/calendar/v3/reference/events
它返回如下值:
$event->start->dateTime = 2015-07-06T14:30:00+02:00
$event->se->dateTime = 2015-07-06T15:30:00+02:00
我试过:
echo $neweventDateStr;
并且我返回错误(如预期的那样),因为变量不是dateTime
对象格式,因此无法将其转换为字符串。
答案 0 :(得分:1)
问题在于您的代码: -
$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