Google Calendar API PHP(400)缺少结束时间

时间:2017-12-05 00:56:27

标签: php google-calendar-api

我使用以下代码创建一个事件但是出错了。

$service = new Google_Service_Calendar();
$calendarId = "<some calendar id>";
$startDate = "2017-12-04";
$startTime = "18:00:00";
$endDate = "2017-12-04";
$endTime = "19:00:00";
$tzOffset = "+08";
$newEvent = new Google_Service_Calendar_Event();
$newEvent->setSummary("title");
$newEvent->setLocation("where");
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime("{$startDate}T{$startTime}.000{$tzOffset}:00");
$newEvent->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime("{$endDate}T{$endTime}.000{$tzOffset}:00");
$newEvent->setEnd($end);
$newEvent->setDescription("desc");

$result = $service->events->insert($calendarId, $newEvent);

结果如下。

Error calling PUT <some url>: (400) Missing end time.

那有什么不对?请帮忙。谢谢!

1 个答案:

答案 0 :(得分:0)

我终于找到了原因。这是我的坏事。

该功能是根据我系统中的日程安排在Google日历上创建整个日程安排。我试图在此函数之前截断摘要字段。问题出在这里,因为当我使用substr()截断时,summary字节是多字节字符串的可能性,结果字符串偶尔会包含不需要的字符。这些字符与API创建的JSON格式不一致。并且服务器可能正确地解析JSON,因此无法获得某些属性,比如结束时间属性。错误消息是正确的但有误导性。