Php 重复事件的Google日历Url提要不正确
我使用以下代码解析Google日历提要中的XML数据:Php 重复事件的Google日历Url提要不正确,php,xml,Php,Xml,我使用以下代码解析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
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'可以解决这个问题,但显然不行!这里的正确修复方法是什么?将您的URL与中的URL进行比较。您正在以
'Y/m/d'
的格式提供参数min start
和max start
。该文档显示了一个带有参数的示例
start-min=2006-03-16T00:00:00&start-max=2006-03-24T23:59:59
注意start min
和start max
的使用,以及yyyy-MM-dd'HH:MM:ss的格式。考虑到这一点,我怀疑您可以只使用yyyy-MM-dd
,但您应该遵循该格式,而不是使用斜杠和单位数版本
当然,这并不能完全解释2026年的结果,但使用正确的参数将是一个很好的起点
另外,您可能希望考虑使用和可能的
(注意:虽然我为谷歌工作,并且自己也使用客户端API,但这个答案完全是以个人身份提供的。)为什么URL中的HTML实体会转义(&;
)呢?这是我在阅读后添加的。尽管如此,我还是有同样的问题。那就把它拿出来吧?谢谢Jon,请注意PHP时代是H:m:s,不过我现在已经把它整理好了。我不确定我使用的是什么版本,只知道我使用了CoreyLib来解析XML数据。我该如何改变这一点?@RickDonohoe:如果你查看v3文档,你会发现v3 URL以以下内容开头:我会使用$api=new-clApi('.$calendar.'/events?singleevents=true')??这使它自动变成了一个链接并添加了一个分号,但你明白了。@RickDonohoe:我不知道-我没有使用V3API,我也不是PHP开发人员。我建议您查看v3客户端库的文档。