如何更新ICal

时间:2016-03-07 22:17:41

标签: icalendar rfc5545

我目前正在处理ical格式,需要处理重复发生的事件。

我正在与Icloud直接合作,并设法创建和删除重复发生的事件。

但是,在尝试更新上述重复发生时,我遇到了一些问题。

例如,假设我有一个名为'test'的事件,每天安排一周。 我该怎样继续将周二的出现重命名为“其他头衔”?或甚至更改此特定事件的日期?

我试图通过使用它的ID简单地更新出现但是它似乎创建了它的克隆而不是触及真实的出现。此外,当尝试从Icloud日历界面访问克隆事件时,它会崩溃。

所以我有点陷入困境,并希望得到一些帮助:)

非常感谢,

2 个答案:

答案 0 :(得分:0)

目前尚不清楚您是否正在尝试更新出现的情况。

在任何情况下,您仍应该只有一个日历资源,但它应该包含

  • 一个“主”VEVENT,包含基本信息,以及RRULE,
  • 每个实例的一个VEVENT,它是基本事件的“例外”,其中每个例外由其RECURRENCE-ID标识。

RFC5545没有此类事件的任何示例,但RFC5546在https://tools.ietf.org/html/rfc5546#section-4.4.8处有一些非常接近的东西(使用RDATE而不是RRULE,不需要METHOD属性,但你明白了。)

答案 1 :(得分:0)

为未来的读者发帖。由于某些原因,很难找到 RECURRENCE-ID

的工作示例

以下资源将在 2021 年 1 月 13 日开始的 10 天内每天重复一个事件“测试”(UTC 上午 10 点 - 下午 1 点),除了 2021 年 1 月 15 日,该事件将被称为“除我之外的测试”,并从下午 3 点开始 -世界标准时间下午 6 点。

BEGIN:VCALENDAR
VERSION:2.0
BEGIN:VEVENT
UID:232392939239293293@hello.me
DTSTART:20210113T100000Z
DTEND:20210113T130000Z
SUMMARY:test
RRULE:FREQ=DAILY;INTERVAL=1;COUNT=10
END:VEVENT
BEGIN:VEVENT
UID:232392939239293293@hello.me
DTSTART:20210115T150000Z
DTEND:20210115T180000Z
SUMMARY:test except me
RECURRENCE-ID;VALUE=DATE-TIME:20210115T100000Z
END:VEVENT
END:VCALENDAR