Google 日历 Api 获取本周的活动
Google Calendar Api get events on current week
我正在尝试使用 Google Api.
从一个 public Google 日历中获取本周的事件列表
我的所有配置都很好,我可以在一个网页中进行任何测试、列出和显示事件,但我搜索了任何类型的查询以使用服务器日期获取本周的事件但没有成功。
我认为可以使用 Google Api documentation 中指示的 "q" 选项,但我不知道我可以指示当前的周数。
编辑:
我找到了一种解决方案并发布为答案。
假设我在 02-12-2017 到 02-18-2017 的一周有 50 个事件。第一场活动在 02-12 的 5am 开始,最后一场活动在 02-18 的 8pm 开始。使用中央标准时间 (CST),我是这样做的:
$service = new Google_Service_Calendar($client);
$optParams = array(
"timeMin" => "2017-02-12T05:00:00-06:00",
"timeMax" => "2017-02-18T20:00:01-06:00"
);
$events = $service->events->listEvents('calendar@email.address', $optParams);
foreach ($events->getItems() as $event) {
print $eventnum . " - Event Name: ". $event->summary . "<br>";
}
我不确定 q
是否有助于实现这一目标。我试过了,但它只适用于事件的名称和描述,而不适用于开始时间或结束时间。希望这些信息对您有所帮助。
我在这里发布我为我的问题找到的解决方案:
我用 strtotime 计算了所需的日期范围,在我的例子中,是上周日和下周一之间的所有日子。然后我将这些参数传递给我的请求:
function getEvents($service, $calendarId){
//De un Domingo al otro
$date_inicio = date('c',strtotime( "previous sunday" ));
$date_fin = date('c',strtotime( "next monday" ));
$optParams = array(
'orderBy' => 'startTime',
'singleEvents' => TRUE,
'timeMin' => $date_inicio,
'timeMax' => $date_fin
);
$results = $service->events->listEvents($calendarId, $optParams);
if (count($results->getItems()) == 0) {
print "Ningún evento encontrado.\n";
} else {
foreach ($results->getItems() as $event) {
$start = $event->start->dateTime;
if (empty($start)) {
$start = $event->start->date;
}
printf("%s (%s)\n", $event->getSummary(), $start);
echo $start.'<br>'.$event->getSummary().'<br>'.$event->getDescription().'<hr>';
printf("%s (%s)\n<br><br>", $event->getDescription(), $start);
}
}
}
我正在尝试使用 Google Api.
从一个 public Google 日历中获取本周的事件列表我的所有配置都很好,我可以在一个网页中进行任何测试、列出和显示事件,但我搜索了任何类型的查询以使用服务器日期获取本周的事件但没有成功。
我认为可以使用 Google Api documentation 中指示的 "q" 选项,但我不知道我可以指示当前的周数。
编辑: 我找到了一种解决方案并发布为答案。
假设我在 02-12-2017 到 02-18-2017 的一周有 50 个事件。第一场活动在 02-12 的 5am 开始,最后一场活动在 02-18 的 8pm 开始。使用中央标准时间 (CST),我是这样做的:
$service = new Google_Service_Calendar($client);
$optParams = array(
"timeMin" => "2017-02-12T05:00:00-06:00",
"timeMax" => "2017-02-18T20:00:01-06:00"
);
$events = $service->events->listEvents('calendar@email.address', $optParams);
foreach ($events->getItems() as $event) {
print $eventnum . " - Event Name: ". $event->summary . "<br>";
}
我不确定 q
是否有助于实现这一目标。我试过了,但它只适用于事件的名称和描述,而不适用于开始时间或结束时间。希望这些信息对您有所帮助。
我在这里发布我为我的问题找到的解决方案: 我用 strtotime 计算了所需的日期范围,在我的例子中,是上周日和下周一之间的所有日子。然后我将这些参数传递给我的请求:
function getEvents($service, $calendarId){
//De un Domingo al otro
$date_inicio = date('c',strtotime( "previous sunday" ));
$date_fin = date('c',strtotime( "next monday" ));
$optParams = array(
'orderBy' => 'startTime',
'singleEvents' => TRUE,
'timeMin' => $date_inicio,
'timeMax' => $date_fin
);
$results = $service->events->listEvents($calendarId, $optParams);
if (count($results->getItems()) == 0) {
print "Ningún evento encontrado.\n";
} else {
foreach ($results->getItems() as $event) {
$start = $event->start->dateTime;
if (empty($start)) {
$start = $event->start->date;
}
printf("%s (%s)\n", $event->getSummary(), $start);
echo $start.'<br>'.$event->getSummary().'<br>'.$event->getDescription().'<hr>';
printf("%s (%s)\n<br><br>", $event->getDescription(), $start);
}
}
}