2009-08-13 76 views
4

我试图通过协议API向我的日历添加周期性事件。我从我在Google界面中创建的事件中获取了重复标记的语法,并在我的创建请求中使用了该事件。以下是我提交的内容:通过XML向Google日历添加周期性事件

<?xml version='1.0' encoding='utf-8' ?> 
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:gd='http://schemas.google.com/g/2005'> 
    <category scheme='http://schemas.google.com/g/2005#kind' term='http://schemas.google.com/g/2005#event'></category> 
    <title type='text'>Hi Stack Overflow!</title> 
    <content type='text'>Help me please!</content> 
    <gd:where valueString='StackOverflow.com'></gd:where> 
    <gd:recurrence> 
     DTSTART;TZID=America/Los_Angeles:20090824T080000 
     DTEND;TZID=America/Los_Angeles:20090824T090000 
     RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T090000 
     BEGIN:VTIMEZONE TZID:America/Los_Angeles X-LIC-LOCATION:America/Los_Angeles 
     BEGIN:DAYLIGHT TZOFFSETFROM:-0800 TZOFFSETTO:-0700 TZNAME:PDT DTSTART:19700308T020000 
     RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 
     END:DAYLIGHT 
     BEGIN:STANDARD TZOFFSETFROM:-0700 TZOFFSETTO:-0800 TZNAME:PST DTSTART:19701101T020000 
     RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 
     END:STANDARD 
     END:VTIMEZONE 
    </gd:recurrence> 
</entry> 

事件已添加,但不重复。当我查看结果事件馈送的重复部分时,定义重复的RRULE不在那里。

谢谢你的帮助!

回答

5

两件事情:

  1. 你的时区部分是无效的 - 我相信每个属性应该是对自己的一条线。

  2. 你的“UNTIL”应该是UTC时间。从RFC2445:

如果指定为日期时间值,那么它必须在UTC时间格式指定。

所以这里有一个完整的例子,调整了本地时间为UTC的“直到”部分,并扩大了时区:

DTSTART;TZID=America/Los_Angeles:20090824T080000 
DTEND;TZID=America/Los_Angeles:20090824T090000 
RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T160000Z 
BEGIN:VTIMEZONE 
TZID:America/Los_Angeles 
X-LIC-LOCATION:America/Los_Angeles 
BEGIN:DAYLIGHT 
TZOFFSETFROM:-0800 
TZOFFSETTO:-0700 
TZNAME:PDT 
DTSTART:19700308T020000 
RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU 
END:DAYLIGHT 
BEGIN:STANDARD 
TZOFFSETFROM:-0700 
TZOFFSETTO:-0800 
TZNAME:PST 
DTSTART:19701101T020000 
RRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU 
END:STANDARD 
END:VTIMEZONE 

我已暗自怀疑这个可能已最近的变化。

或者,您可能想尝试完全忽略VTIMEZONE部分 - 只需提供TZID,该TZID应该是您知道Google日历支持的ID。例如:

DTSTART;TZID=America/Los_Angeles:20090824T080000 
DTEND;TZID=America/Los_Angeles:20090824T090000 
RRULE:FREQ=DAILY;WKST=SU;UNTIL=20090828T160000Z 
+1

这样,除了删除领先的空白(我缩进它)做到了。 – KingErroneous 2009-08-13 21:28:06

+0

有类似的问题,罪魁祸首是空白!谢谢 – aldrin 2009-12-17 12:41:36

相关问题