字符串

时间:2015-07-06 11:09:53

标签: php datetime google-calendar-api

我在这里很清楚地知道还有其他问题和答案,我一直在经历这些问题和答案: 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对象格式,因此无法将其转换为字符串。

1 个答案:

答案 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