过滤事件列表谷歌日历PHP


Filtering Event List Google Calendar PHP

我试图获取事件之间的某些用户给定的日期从谷歌日历使用以下代码段:

form name="dates" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  Start: <input type="date" name="start">
  End: <input type="date" name="end">
  <br />
  <input type="submit" name="submit" value="Anzeigen">
</form>
<?php
if(isset($_POST['submit'])) 
{ 
    echo "Dates were chosen: Start " . date($_POST['start']) . ' and End ' . date($_POST['end']);
    // Get the API client and construct the service object.
    $client = getClient();
    $service = new Google_Service_Calendar($client);
    // Print the next 10 events on the user's calendar.
    $calendarId = 'bkrni7gfaiumlahibu0mnifjvk@group.calendar.google.com';
    $optParams = array(
      'maxResults' => 10,
      'orderBy' => 'startTime',
      'singleEvents' => TRUE,
      'timeMin' => date($_POST['start']),
    );
    $results = $service->events->listEvents($calendarId, $optParams);
    if (count($results->getItems()) == 0) {
      print "No upcoming events found.'n";
    } else {
      print "Upcoming events:'n";
      foreach ($results->getItems() as $event) {
        $start = $event->start->dateTime;
        if (empty($start)) {
          $start = $event->start->date;
        }
        printf("%s (%s)'n", $event->getSummary(), $start);
      }
    }
} else {
    echo 'Bitte ein Start- und Enddatum auswählen.';
}
?>

日期选择工作正常,所选日期显示,但我得到以下php错误:

[29-May-2015 17:34:05 Europe/Berlin] PHP Fatal error:  Uncaught exception 'Google_Service_Exception' with message 'Error calling GET https://www.googleapis.com/calendar/v3/calendars/bkrni7gfaiumlahibu0mnifjvk%40group.calendar.google.com/events?maxResults=10&orderBy=startTime&singleEvents=true&timeMin=2015-05-31CEST00%3A00: (400) Bad Request' in /html/calendar/api/google-api-php-client/src/Google/Http/REST.php:110
Stack trace:
#0 /html/calendar/api/google-api-php-client/src/Google/Http/REST.php(62): Google_Http_REST::decodeHttpResponse(Object(Google_Http_Request), Object(Google_Client))
#1 [internal function]: Google_Http_REST::doExecute(Object(Google_Client), Object(Google_Http_Request))
#2 /html/calendar/api/google-api-php-client/src/Google/Task/Runner.php(174): call_user_func_array(Array, Array)
#3 /html/calendar/api/google-api-php-client/src/Google/Http/REST.php(46): Google_Task_Runner->run()
#4 /html/calendar/api/google-api-php-client/src/Google/Client.php(590): Google_Http_REST::execute(Object(Google_Client), Object(Google_Http_Request))
#5 /html/calendar/ap in /html/calendar/api/google-api-php-client/src/Google/Http/REST.php on line 110

为什么会失败,因为根据这个API, timeMin应该是一个dateTime

感谢luc的评论,我发现了问题。现在,使用

$timeMin = date($_POST['start']) . "T00:00:00Z";
$timeMax = date($_POST['end']) . "T00:00:00Z";
调用API 中的

// Print appointments between given start and end date
$calendarId = 'bkrni7gfaiumlahibu0mnifjvk@group.calendar.google.com';
$optParams = array(
  'orderBy' => 'startTime',
  'singleEvents' => TRUE,
  'timeMin' => $timeMin,
  'timeMax' => $timeMax,
);
$results = $service->events->listEvents($calendarId, $optParams);

我得到了想要的结果