微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

除每月最后一周外,每隔一周 RRULE

如何解决除每月最后一周外,每隔一周 RRULE

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

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

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

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

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

解决方法

这里解决方案的秘诀是 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/ 用于扩展和收缩(限制)规则和组合

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。