我使用以下代码创建一个事件但是出错了。
$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.
那有什么不对?请帮忙。谢谢!
答案 0 :(得分:0)
我终于找到了原因。这是我的坏事。
该功能是根据我系统中的日程安排在Google日历上创建整个日程安排。我试图在此函数之前截断摘要字段。问题出在这里,因为当我使用substr()截断时,summary字节是多字节字符串的可能性,结果字符串偶尔会包含不需要的字符。这些字符与API创建的JSON格式不一致。并且服务器可能正确地解析JSON,因此无法获得某些属性,比如结束时间属性。错误消息是正确的但有误导性。