0

テレビで「今日のイベント」を表示するために使用する Google カレンダーを解析しようとしています。

私は友人の助けのおかげでほとんどここまで来ましたが、誰かが私を助けてくれるかどうか知りたかったのです。

以下のコードは、すべての情報を含むカレンダーを生成しますが、すべてのエントリについて日付を表示します。それらはすべて同じ日であるため、これを見るとイライラして混乱します。私はプログラマーには程遠いですが、いくつかのことは理解できます。

今日のすべてのイベントを 1 つの日付見出しの下にグループ化するにはどうすればよいですか?

前もって感謝します。

<?php
    $confirmed = 'http://schemas.google.com/g/2005#event.confirmed';
    $three_months_in_seconds = 60 * 60 * 24 * 28 * 3;
    $three_months_ago = date("Y-m-d\Th:i:s", time() - $three_months_in_seconds);
    $three_months_from_today = date("Y-m-d\Th:i:s", time() + $three_months_in_seconds);
    $params = "?orderby=starttime&start-min=" . $three_months_ago . "&start-max=" . $three_months_from_today;
//$params = "?orderby=starttime&start-min=2012-12-01T05:48:47&start-max=2013-05-07T05:48:47&sortorder=a&singleevents=true&futureevents=true";
$params = "?orderby=starttime&sortorder=a&singleevents=true&futureevents=true";
    $feed = "https://www.google.com/calendar/feeds/REDACTED%40gmail.com/private-REDACTED/full".$params;
    $doc = new DOMDocument();
     if (!$doc->load( $feed )) echo 'failed to load';
    $entries = $doc->getElementsByTagName( "entry" );
    foreach ( $entries as $entry ) {

        $status = $entry->getElementsByTagName( "eventStatus" );
        $eventStatus = $status->item(0)->getAttributeNode("value")->value;

        if ($eventStatus == $confirmed) {
            $titles = $entry->getElementsByTagName( "title" );
            $title = $titles->item(0)->nodeValue;

            $times = $entry->getElementsByTagName( "when" );
            $startTime = $times->item(0)->getAttributeNode("startTime")->value;
            $when = date( "D M j, Y", strtotime( $startTime ) );
            $time = date("g:i A",strtotime($startTime));


            $places = $entry->getElementsByTagName( "where" );
            $where = $places->item(0)->getAttributeNode("valueString")->value;

            print "<div class='row when'>$when</div>";
            echo "<div class='row event'><span class='time'>$time</span><span class='title'>$title</span><span class='where'>$where</span></div>";
//            print $where . "\n";
            print "\n";
        }
    }
?>
4

1 に答える 1

1

答えてください:

これを変更するだけです:

print "<div class='row when'>$when</div>";

これに:

if ($old_when!=$when) print "<div class='row when'>$when</div>"; $old_when=$when;

そして追加

$old_when = null;

foreachの前に

于 2013-02-14T21:44:36.417 に答える