首页 > 解决方案 > 如何在每月第一个星期六之前的星期五编写 ICS 文件?

问题描述

我已经看到如何为重复事件编写 ICS 文件?但是我有一个相当复杂的重复出现,并且在查看RRULE的语法后无法找出规则。

我想要在每个月的第一个星期六之前的星期五发生的事件。这个星期五之前的第一个星期六当然可能在上个月。我假设如果我能让这个工作,Friday-before-the-second-Saturday 和 -third- 和 -fourth- 的类似(但不相同)事件,未定义Friday-before-the-second-Saturday-third--fourth-

显然我有RRULE:FREQ=MONTHLY;BYDAY=FR;,但如果我尝试使用一些示例,BYMONTHDAY我会遇到麻烦:28将是一个有效的Friday-before-a-first-Saturday in 2 月,但在任何其他月份,Friday 28th 将是周五之前第5个星期六。对于29(闰年)3031.

目标是将其包含在 Google 日历中,我知道它支持显示它无法编辑的 ICS RRULE。那么,假设有可能,我怎样才能为这个事件创建一个 RRULE?我已经考虑了每个月长度的单独事件和随附规则。31:一月、三月、五月、七月、八月、十月、十二月和 30:四月、六月、九月、十一月都可以,但闰年仍然是一个问题:二月 28 日可能是第一个星期六或第五个星期六之前的星期五(例如 2020 年,所以我的前两个案例之一失败了)。

标签: icalendar

解决方案


您在必须使用 BYDAY=FR 的情况下走在正确的轨道上,并且由于您可以使用负 BYMONTHDAY,以下应该可以解决问题:

RRULE:FREQ=MONTHLY;BYDAY=FR;BYMONTHDAY=-1,1,2,3,4,5,6


推荐阅读