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

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

谢谢!

最佳答案



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

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



  • 所以行为取决于实际实现,我不知道谷歌日历 API。不过,我所知道的大多数库都支持多个 RRULE,因此您应该尝试一下。
  • 再次,如果有模式,你也可以使用 BYSETPOS 。围绕这个问题有点复杂,但基本上您需要生成一组事件(例如,超过一周),然后挑选有效的事件。尝试这样的事情(为了清晰起见,多行):

  • DTSTART=20160711T140000
    频率=每周
    BYDAY= MO,TU,WE,TH,FR
    时间=14,15
    BYSETPOS=1,4,5,8,9

    这将在周一 2 点、周二 3 点、周三 2 点交替,依此类推。同样,您需要一个清晰的重复模式才能使这个模式起作用。
  • 如果没有模式,而您只想在不同的时间度过几天,请将您的 RRULERDATEEXDATE 结合起来添加或删除特殊事件。
  • 关于iCalendar Spec RRULE 多次?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38296679/

    10-13 22:38