【问题标题】:RRULE for every other week except last week of month除每月最后一周外,每隔一周使用一次 RRULE
【发布时间】:2021-08-26 21:03:18
【问题描述】:

除了每个月的最后一周,我每隔一个星期六都需要一个 RRULE。我尝试以每周频率创建一个,但不知道如何在该月的最后一周应用例外:

RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SA

我还尝试创建一个每月频率的规则,这允许我跳过该月的最后一周,但我不知道如何每隔一周创建一次:

RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SA;BYSETPOS=-2,-3,-4,-5

我查看了规范,但没有看到任何使这成为可能的东西。

【问题讨论】:

    标签: icalendar rrule


    【解决方案1】:

    这里解决方案的秘诀是 BYMONTHDAY 可以像 BYSETPOS 一样为负数。这允许人们排除每个月的最后 7 天,即使该月的天数不同。您的 DTSTART 应该在星期六,所以不需要 BYDAY=SA

    此规则适用于谷歌日历(如果 DTSTART 是在星期六,并且通常适用于任何第二周,但不适用于 DTSTART 指定的一周中任何一天的最后一周规则):

    RRULE:FREQ=WEEKLY;INTERVAL=2;BYMONTHDAY=-8,-9,-10,-11,-12,-13,-14,-15,-16,-17,-18,-19 ,-20,-21,-22,-23,-24,-25,-26,-27,-28,-29,-30,-31

    查看测试日历: https://calendar.google.com/calendar/u/0?cid=ZXBwdWE4N2RwZm5xODVic3JydDJzaXFsY3NAZ3JvdXAuY2FsZW5kYXIuZ29vZ2xlLmNvbQ

    规格:https://datatracker.ietf.org/doc/html/rfc2445#page-43

    和 https://icalevents.com/2447-need-to-know-the-possible-combinations-for-repeating-dates-an-ical-cheatsheet/ 用于扩展和收缩(限制)规则和组合

    【讨论】:

      猜你喜欢
      • 2020-03-30
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2021-09-12
      • 2021-08-04
      • 1970-01-01
      相关资源
      最近更新 更多