如何在iCal Feed中指定例外?

时间:2014-03-26 18:15:55

标签: c# icalendar

我正在为我们的应用程序创建iCal供稿。事情进展顺利。除了例外,我的一切工作正常。例如,当您安排定期事件并需要取消一天时,我在Feed中使用 EXDATE 标记,这样可以正常删除计划的事件。

问题是,如果您有一个定期活动,从今天下午2点开始,并重复5次。在我们的应用程序中,如果需要,用户可以将这些周中的任何一周更改为@ 3pm。如何在iCal Feed中指定它?

我一直在查看文档,但必须遗漏一些内容......

非常感谢!

2 个答案:

答案 0 :(得分:0)

我相信只要您使用基于原始时间的RECURRENCE-ID生成记录,并使用原始UID,您就应该能够为单个实例设置DTSTART和DTEND值。你也需要增加SEQUENCE。这应该会触发客户端软件的更新。

答案 1 :(得分:0)

Drowsy走在正确的轨道上。

  1. UID必须匹配,以便将调整识别为 属于原始事件。
  2. Recurrence Id将其与正在修改的重复序列的实例匹配。 这是因为当然可能会改变日期和时间 以及其他变化和一个不想要原件 由重复规范生成的实例,以及 修改。
  3. 是的,最后序列id必须在那里 在案件中,人们知道修改的顺序或层次 有几个。
  4. 例如 - 如果您修改定期事件,这里是Google日历生成的转储。

    BEGIN:VEVENT
    DTSTART;TZID=Australia/Sydney:20140325T084000
    DTEND;TZID=Australia/Sydney:20140325T101000
    DTSTAMP:20140327T060506Z
    UID:vu2d4gjdj4mpfuvas53qi32s7k@google.com
    RECURRENCE-ID;TZID=Australia/Sydney:20140325T083000
    CREATED:20131216T033331Z
    DESCRIPTION:
    LAST-MODIFIED:20140327T060215Z
    LOCATION:
    SEQUENCE:1
    STATUS:CONFIRMED
    SUMMARY:test Event
    TRANSP:OPAQUE
    END:VEVENT
    
    
    BEGIN:VEVENT
    DTSTART;TZID=Australia/Sydney:20140128T083000
    DTEND;TZID=Australia/Sydney:20140128T100000
    RRULE:FREQ=WEEKLY;UNTIL=20141208T213000Z;BYDAY=TU
    DTSTAMP:20140327T060506Z
    UID:vu2d4gjdj4mpfuvas53qi32s7k@google.com
    CREATED:20131216T033331Z
    DESCRIPTION:
    LAST-MODIFIED:20140222T101012Z
    LOCATION:
    SEQUENCE:0
    STATUS:CONFIRMED
    SUMMARY:Test event
    TRANSP:OPAQUE
    END:VEVENT