日历循环规则 - 连续日期:每个第一个和第三个星期五和星期六
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
在 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