3

我正在尝试为 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 函数设置我的日期时,全天活动都可以正常工作。

4

2 回答 2

5

我不知道您的整个代码,但是在尝试在 Google 日历事件上设置日期时间时,我收到了相同的错误消息。当我使用 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);
于 2013-10-11T06:22:17.640 回答
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);

:)

尽管 google 自己的文档陈旧且无效,但您可能希望使用他们的一些方法:https ://developers.google.com/google-apps/calendar/v3/reference/events/insert

于 2014-03-17T13:21:13.310 回答