iCalendar Spec RRULE多次?

时间:2016-07-10 21:38:35

标签: icalendar recurrence rrule

我正在开发一些与Google Calendar API接口的软件,我的用户可以利用的一个功能是为单个“类”设置多个事件时间(即某些类的类别为2-5)天和3-6在其他人)。

重复规则是否可以为不同的日期指定不同的时间,允许我创建一个重复事件而不是多个?

谢谢!

2 个答案:

答案 0 :(得分:4)

  

重复规则是否可以为不同的日期指定不同的时间,允许我创建一个重复事件而不是多个?

不,不是真的,但你可以用其他方法实现这个结果。

  • 如果有模式,您可以合并多个RRULE。例如,从星期一2开始每隔一天重复一次,第二次从星期二开始每隔3天重复一次。因此,组合结果将是星期一2,星期二3,星期三2,依此类推。虽然请注意,根据RFC,您不应该定义多个RRULE(参见 https://tools.ietf.org/html/rfc5545#section-3.8.5.3
  

它不应该多次指定。         使用多个" RRULE"生成的重复集。属性是         未定义。

所以行为取决于实际的实现,我不知道Google Calendar API。我知道的大多数图书馆确实支持多个RRULE,所以你应该试一试。

  • 同样,如果有模式,您也可以使用BYSETPOS。围绕这个问题包围你有点复杂,但基本上你需要生成一组事件(例如,超过一周),然后挑选那些有效的事件。尝试这样的事情(为清晰起见,多行):
DTSTART=20160711T140000
FREQ=WEEKLY
BYDAY=MO,TU,WE,TH,FR
BYHOUR=14,15
BYSETPOS=1,4,5,8,9

这将于周一2,周二3,周三2,等等。同样,你需要一个清晰的重复模式才能使这个模式起作用。

  • 如果没有模式且您只想让某些日子有不同的时间,请将RRULERDATEEXDATE合并,以添加或删除特殊事件。

答案 1 :(得分:0)

您可以在 Google 日历上使用多个 RRULE,但我不建议这样做。请参阅 v3 API documentation -- recurrence[]。传递一个字符串数组。

虽然 Google 日历会尊重多个 RRULE,但 Apple 日历目前只会使用一个。这意味着任何人在他们的笔记本电脑/手机上使用 Apple 日历(从 Google 日历同步)都不会看到所有重复。

此外,即使 Google 日历会正确地重复该事件,UI 中使用的重复书面描述也仅描述了一个 RRULE

例如。 “每周四,直到 2021 年 5 月 15 日”,而不是“每周二和周四,直到 2021 年 5 月 15 日”