iCalendar Spec RRULE 多次?

ccr*_*ama 5 icalendar recurrence rrule

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

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

谢谢!

rla*_*vin 4

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

不,不是真的,但是您可以通过其他方法实现此结果。

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

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

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

  • 同样,如果有模式,您也可以使用BYSETPOS. 理解这个问题有点复杂,但基本上您需要生成一组事件(例如,一周以上),然后挑选有效的事件。尝试这样的事情(为了清晰起见,多行):
DTSTART=20160711T140000
频率=每周
BYDAY=MO、TU、WE、TH、FR
按小时=14,15
BYSETPOS=1,4,5,8,9

周一 2 点、周二 3 点、周三 2 点交替,依此类推。同样,您需要一种清晰的重复模式才能使其发挥作用。

  • 如果没有模式,而您只想在几天内使用不同的时间,请结合使用RRULERDATEEXDATE添加或删除特殊事件。