red*_*x05 5 php zend-framework gdata event-id recurring-events
我曾试图谷歌这个问题,但没有运气,可能是由于搜索字符串"Z"不够具体.
背景:
使用Google Calendar Zend gdata库,并使用简单的代码列出特定时间段的事件.在这种情况下,2012年2月27日至2012年3月3日.我列出了一些单项活动,其中一个重复活动,名为"Rob",每周一次.
我使用基本代码没有任何花哨的添加.但:)
问题:
当我使用$query->setSingleEvents(TRUE)参数时,一切都按预期工作,并显示正确的事件.
当我谈论'显示'事件时,我正在谈论使用Zend gdata显示日历事件的PHP页面.
在所有情况下,Google日历GUI都会显示正确的数据(即,"Rob"事件未显示,因为它已被删除.
但是当我将其设置FALSE为时,反复出现的事件"Rob"应该具有要分组的开始时间,而是显示一些额外的随机事件而没有a starttime,只是相同的标题.甚至一旦我删除了定期事件,它仍然显示在gdata返回的数据中.
有趣的观察
已删除但仍显示在页面上的事件的EventID以"Z"结尾.它有通常的eventID,后跟:_20120302T030000Z
我的问题
此事件已在Google日历GUI中删除.为什么gdata仍然显示一个被删除的事件,以及以时间戳和Z结尾的eventid是什么意思.
解决方法尝试:
1.尝试将其从重复事件更改为正常事件(删除所有系列
事件的重复'
不运气,仍然列出额外的
事件.2 .完全删除系列中所有事件的重复事件.
这表明再次正确的结果SingleEvents(TRUE),但在FALSE旧的'Rob'事件仍然显示,当它已完全从日历中删除.
码:
function outputCalendarByDateRange($client, $startDate='2012-02-27',
$endDate='2012-03-03')
{
$gdataCal = new Zend_Gdata_Calendar($client);
$query = $gdataCal->newEventQuery();
$query->setUser('default');
$query->setVisibility('private');
$query->setProjection('full');
$query->setOrderby('starttime');
$query->setStartMin($startDate);
$query->setStartMax($endDate);
$query->setSingleEvents(FALSE);
$eventFeed = $gdataCal->getCalendarEventFeed($query);
foreach ($eventFeed as $event) {
echo "Title: " . $event->title->text . "<br />";
echo "Event ID: " . $event->id->text . "<br />";
foreach ($event->when as $when) {
echo "Start: " . $when->startTime . "<br />";
}
echo "<br />";
}
}
Run Code Online (Sandbox Code Playgroud)
这是我在文档中找到的内容:
36.5.6。 删除事件 可以通过调用日历服务的delete() 方法并提供事件的编辑URL 或调用现有事件自己的delete() 方法来删除日历事件。
在任何一种情况下,如果提供了 updateMin 查询参数,则已删除的事件仍将显示在用户的私有事件源上。已删除的事件可以与常规事件区分开来,因为它们的eventStatus 属性设置为 "http://schemas.google.com/g/2005#event.canceled"。
看来您在解析提要时必须测试事件状态。
顺便说一句,时间戳分解为
年:2012 年:03 月:02 时间:T 时:分:秒 03:00:00 祖鲁语:Z
祖鲁语与 GMT(格林威治标准时间)或 UTC(通用时间代码)相同
| 归档时间: |
|
| 查看次数: |
1127 次 |
| 最近记录: |