【问题标题】:How to delete a single event from a recurring set using ical programmatically?如何以编程方式使用 ical 从重复集中删除单个事件?
【发布时间】:2015-09-10 16:20:44
【问题描述】:

我在 10,11 日创建了一个重复性事件,请参见下文,我想删除第 10 个事件,所以我使用了方法:取消,但由于 UID 相同,两条记录都将被删除。如何只删除一条记录,我应该使用 UID 等任何其他值吗?

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH

BEGIN:VEVENT
DTSTART:20150910T100000
DTSTAMP:20150910T115449Z
RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20150911T110000
UID:78163local
Location: Test
DESCRIPTION:test
LAST-MODIFIED:20150910T115449Z
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:service
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

取消事件代码:

BEGIN:VCALENDAR
PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:CANCEL
BEGIN:VEVENT
DTSTART:20150910T100000
DTEND:20150911T110000
DTSTAMP:20150910T115714Z

UID:78163local
Location: Test
DESCRIPTION:Test
LAST-MODIFIED:20150910T115714Z
SEQUENCE:1
STATUS:CANCELLED
SUMMARY:service
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR

【问题讨论】:

    标签: outlook icalendar recurrence vcalendar recurring-events


    【解决方案1】:

    如果您只想删除一个实例,则需要指定要删除的实例的 RECURRENCE-ID。

    实例的 RECURRENCE-ID 对应于该实例的原始 DTSTART。所以在你的情况下,你的取消应该是这样的:

    DTSTART:20150910T100000
    RECURRENCE-ID:20150910T100000
    

    另见https://www.rfc-editor.org/rfc/rfc5546#section-4.4.3

    【讨论】:

      【解决方案2】:

      您需要拥有 RECURRENCE-ID 以及我发现的其他可能的方法是删除创建的具有相同 UID 的另一个递归并使用 METHOD 作为 REQUEST 而不是 PUBLISH,它会删除旧的重复事件并使用新的更新不包括特定提及的日期。

      查看以下链接了解更多http://www.techfolks.net/ical-recurring-appointment-with-rrule-exdate-examples/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-25
        • 2013-06-07
        • 1970-01-01
        • 2019-06-18
        • 1970-01-01
        相关资源
        最近更新 更多