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(?!)です。

1つを除くすべてのイベントは、定期的なイベントです。URLに「singleevents=true」を設定するとこの問題は解決すると思いましたが、明らかにそうではありません。ここでの正しい修正は何ですか?

4

1 に答える 1

3

URLをCalendarAPIv2ドキュメントのURLと比較します。の形式でパラメータmin-startとを提供しています。ドキュメントは、パラメータの例を示していますmax-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パラメータ参照を考えると、。だけyyyy-MM-ddで解決できると思いますが、スラッシュや1桁のバージョンを使用するのではなく、その形式に従う必要があります。

もちろん、それはあなたが2026年に得ている結果を完全に説明するものではありませんが、正しいパラメータを使用することは良い出発点になるでしょう。

さらに、 v3 APIと、場合によってはPHP(ベータ)クライアントライブラリの使用を検討することをお勧めします。

(注:私はGoogleで働いており、クライアントAPIを自分で使用していましたが、この回答は純粋に個人的な立場で提供されています。)

于 2012-10-26T06:01:28.897 に答える