1

我在使用 Google Calendar API 时遇到了一个奇怪的问题(通过 PHP 和 Zend_Gdata。)在有问题的日历上,我从 3 月开始有几个经常性事件:

  • 2010-04-19 9:30 - 16:00
  • 2010-04-20 10:00 - 15:30
  • 2010-04-21 9:30 - 16:00
  • 2010-04-22 10:00 - 15:30
  • 2010-04-23 9:30 - 12:30

这些中的每一个都无限期地重复,但在某些日子有例外。我的问题是 API 在2010-07-15. 在 8 月 2 日这一周,所有 5 次重复都被取消,它们在 Google 日历中显示为这样,但 API 不会返回这几天的异常。

我正在使用以下代码查询日历:

$gc = new Zend_Gdata_Calendar($client);

$query = $gc->newEventQuery();
$query->setUser(/*calendar ID goes here*/);
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setSortorder('ascending');
$query->setMaxResults(500);

$query->setSingleEvents("false");

$query->setStartMin('2010-06-01 00:00:00');
$query->setStartMax('2010-09-20 00:00:00');
$query->setQuery(/*title of the events*/);

return $gc->getCalendarEventFeed($query);

生成的提要包含所有 5 次重复,以及所有已删除实例的“已取消”事件对象,直到2010-07-15它们任意停止为止。我应该注意,getWhen()每次重复的数组都包含正确的时间(即它省略了取消的日期),但由于我的程序的编码方式,重要的是我可以访问实际取消的事件对象。

什么可能导致 API 不返回所有取消/修改的事件?最大结果不是问题,因为提要中只有大约 30 个事件。我基本上没有想法。

提前致谢。

4

1 回答 1

1

我确信这是日历 API 中的一个错误,我最终为它编写了一个解决方法。

我编写了代码来根据开始和重复数据计算事件的预期实例,然后将其与when重复数组中的实例进行比较。当存在预期实例但when数组中缺少它时,它会创建取消的事件对象。

于 2010-07-31T08:54:00.953 回答