日历循环规则 - 连续日期:每个第一个和第三个星期五和星期六

Calendar recurrent rule - Consecutive days: Every First and third Friday and Saturday

在 Google 日历中,使用 rrule,我想为 连续两天 :

设置周期性事件

我希望满足我的要求的是以下 2 个选项中的任何一个:

Possible option 1st match 2nd match
1 fri 30 - sat 1 fri 14 - sat 15
2 fri 7 - sat 8 fri 21 - sat 22

下面的配置显示了我尝试过的结果,屏幕截图显示的结果肯定不是我想要的。

我认为棘手的部分是这两天属于 2 个不同的飞蛾。幸运的是我注意到了这一点,因为今年五月就是这种情况。

知道如何解决这个问题吗?

BEGIN:VCALENDAR
VERSION:2.0

BEGIN:VEVENT
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=FR;BYSETPOS=1
SUMMARY:EventDay1
DTSTART;VALUE=DATE:20210501
SEQUENCE:0
DESCRIPTION:EventDay1
END:VEVENT
BEGIN:VEVENT
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=FR;BYSETPOS=3
SUMMARY:EventDay1
DTSTART;VALUE=DATE:20210501
SEQUENCE:0
DESCRIPTION:EventDay1
END:VEVENT

BEGIN:VEVENT
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SA;BYSETPOS=1
SUMMARY:EventDay2
DTSTART;VALUE=DATE:20210501
SEQUENCE:0
DESCRIPTION:EventDay2
END:VEVENT
BEGIN:VEVENT
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SA;BYSETPOS=3
SUMMARY:EventDay2
DTSTART;VALUE=DATE:20210501
SEQUENCE:0
DESCRIPTION:EventDay2
END:VEVENT

END:VCALENDAR

您可以使用 BYMONTHDAY 而不是 BYSETPOS 来指定该月的第一周和第三周:

  • 第一个星期五:BYMONTHDAY=1,2,3,4,5,6,7
  • 第一个星期六:BYMONTHDAY=2,3,4,5,6,7,8
  • 第三个星期五:BYMONTHDAY=15,16,17,18,19,20,21
  • 第 3 个星期六:BYMONTHDAY=16,17,18,19,20,21,22

可以说不如 BYSETPOS 优雅,但它解决了问题:

BEGIN:VCALENDAR
VERSION:2.0

BEGIN:VEVENT
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=FR;BYMONTHDAY=1,2,3,4,5,6,7
SUMMARY:EventDay1
DTSTART;VALUE=DATE:20210430
EXDATE;VALUE=DATE:20210430
SEQUENCE:0
DESCRIPTION:EventDay1
END:VEVENT
BEGIN:VEVENT
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=FR;BYMONTHDAY=15,16,17,18,19,20,21
SUMMARY:EventDay1
DTSTART;VALUE=DATE:20210430
EXDATE;VALUE=DATE:20210430
SEQUENCE:0
DESCRIPTION:EventDay1
END:VEVENT

BEGIN:VEVENT
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SA;BYMONTHDAY=2,3,4,5,6,7,8
SUMMARY:EventDay2
DTSTART;VALUE=DATE:20210430
EXDATE;VALUE=DATE:20210430
SEQUENCE:0
DESCRIPTION:EventDay2
END:VEVENT
BEGIN:VEVENT
RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=SA;BYMONTHDAY=16,17,18,19,20,21,22
SUMMARY:EventDay2
DTSTART;VALUE=DATE:20210430
EXDATE;VALUE=DATE:20210430
SEQUENCE:0
DESCRIPTION:EventDay2
END:VEVENT

END:VCALENDAR