我正在尝试为Google日历创建一个活动,但我收到此错误:
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函数设置日期时,全天活动正常。
答案 0 :(得分:5)
我不知道您的整个代码,但在尝试在Google日历活动中设置日期时,我收到了相同的错误消息。当我使用谷歌在线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);
答案 1 :(得分:1)
您可以在时间结束时简单地追加时区:
$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