【问题标题】:iCalendar Spec RRULE Multiple Times?iCalendar Spec RRULE 多次?
【发布时间】:2016-11-12 19:04:31
【问题描述】:

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

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

谢谢!

【问题讨论】:

    标签: icalendar recurrence rrule


    【解决方案1】:

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

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

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

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

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

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

    这将在周一 2 点、周二 3 点、周三 2 点交替进行,以此类推。同样,您需要一个清晰的重复模式才能使这个模式发挥作用。

    • 如果没有规律,而您只是想有一些不同时间的日子,请将您的 RRULERDATEEXDATE 组合起来以添加或删除特殊事件。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-06
        • 2011-03-22
        • 2013-12-07
        • 2012-10-11
        • 2012-04-10
        相关资源
        最近更新 更多