我正试图为谷歌日历创建一个事件,但我收到了以下错误:
Invalid value for: "T" found, can only parse bare date string: 2013-08-22T16:00:00
我还尝试将时区偏移添加到字符串中,但我在EventDateTime对象中手动设置了时区,根据文档,这是不必要的。
以下是我如何创建时间字符串:
data['start'] = $("#inputDateStart").val() + "T" + $("#inputTimeStart").val();
以及我如何在我的对象中设置这个字符串
$start = new Google_EventDateTime();
$start->setTimeZone('America/Montreal');
$start->setDateTime($data['start']);
$event->setStart($start);
我错过了什么?当我只使用setDate函数设置日期时,全天事件都可以正常工作。
我不知道你的全部代码,但我在谷歌日历事件上设置日期时间时收到了同样的错误消息。当我使用谷歌在线api检查器时,我使用的日期/时间格式和时区运行得很好。最后,我发现问题是因为我做了这个(使用了类似于你的符号):
$start = new Google_EventDateTime();
$start->setDate('2013-10-10');
$event->setStart($start);
后来,在发现后,我有了可用的日期和时间数据:
$start->setTimeZone('Europe/London');
$start->setDateTime('2013-10-10T19:15:00');
$event->setStart($start);
这给了我你提到的错误信息。也许谷歌解析器认为这只是一天的事件,然后被额外的日期/时间数据弄糊涂了。当我第一次检查我是否同时有日期和时间数据时,问题就消失了:
$start = new Google_EventDateTime();
$start->setTimeZone('Europe/London');
$start->setDateTime('2013-10-10T19:15:00');
$event->setStart($start);
您可以简单地在时间末尾附加时区:
$start = new Google_EventDateTime();
$start->setDateTime('2011-06-03T10:00:00-07:00');
$event->setStart($start);
这是GMT-7
因此,在您的情况下,这将起作用:
$start = new Google_EventDateTime();
$start->setDateTime($data['start']."-4:00");
$event->setStart($start);
:)
尽管谷歌自己的文档是旧的和无效的,你可能喜欢使用他们的一些方法:https://developers.google.com/google-apps/calendar/v3/reference/events/insert