2

我正在使用以下代码来解析来自 Google 日历提要的 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' 可以解决这个问题,但显然不是!这里的正确解决方法是什么?

4

1 回答 1

3

将您的 URL 与Calendar API v2 文档中的 URL 进行比较。您提供参数min-startmax-start,格式为'Y/m/d'. 该文档显示了一个带有参数的示例

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

注意 和 的使用,start-min以及start-max的格式yyyy-MM-dd'T'HH:mm:ss。鉴于参数参考,我怀疑您可以使用 just yyyy-MM-dd,但您应该遵循该格式,而不是使用斜杠和个位数版本。

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

此外,您可能希望考虑使用v3 API和可能的PHP(测试版)客户端库

(注意:虽然我为 Google 工作并且自己曾经使用过客户端 API,但此答案纯粹以个人身份提供。)

于 2012-10-26T06:01:28.897 回答