Google日历网址Feed不定期发生重复活动

时间:2012-10-22 10:53:58

标签: php xml

我使用以下代码来解析Google日历Feed中的XML数据:

    require_once('coreylib/coreylib.php');

    $calendar = variable_get('calendar_id_setting');

    $now = date('Y/m/d', strtotime('now'));
    $next_week = date('Y/m/d', strtotime('+7 days'));
    $api = new clApi('http://www.google.com/calendar/feeds/' . $calendar .'/public/full?singleevents=true&min-start=' . $now . '&max-start=' .$next_week);

    if ($feed = $api->parse()) {

        foreach($feed->get('entry') as $entry) {

                  error_log($title . ' ' . strtotime($entry->get('when@startTime')));

问题在于错误日志我的第一个结果是具有正确标题和时间的唯一事件,但是以下25个结果都具有相同的标题并且在2026年具有开始时间(?!)。

除了其中一个事件外,所有事件都是重复发生的事件。我认为在URL上设置'singleevents = true'可以解决这个问题,但显然不是!这里的正确解决方法是什么?

1 个答案:

答案 0 :(得分:3)

将您的网址与Calendar API v2 documentation中的网址进行比较。您提供的参数min-startmax-start的格式为'Y/m/d'。文档显示了参数为

的示例
start-min=2006-03-16T00:00:00&start-max=2006-03-24T23:59:59

请注意start-minstart-max的使用,以及yyyy-MM-dd'T'HH:mm:ss的格式。鉴于parameter reference我怀疑你只能使用yyyy-MM-dd,但你应该遵循这种格式,而不是使用斜杠和单位数版本。

当然,这并没有完全解释你在2026年得到的结果,但使用正确的参数将是一个很好的起点。

此外,您可以考虑使用v3 API,也可以考虑使用PHP (beta) client library

(注意:虽然我在Google工作并且过去常常使用客户端API,但这个答案完全以个人身份提供。)