如何在一个月的第一个星期六之前的星期五编写ICS文件?

时间:2018-10-01 14:03:56

标签: icalendar

我见过How can an ICS file be written for a recurring event?,但复发情况相当复杂,在查看the syntax的RRULE规则后无法弄清楚规则。

我想要一个在每个月的第一个星期六之前的星期五发生的事件。当然,这个第一个星期六之前的星期五可能在上个月。我假设如果我可以使用它,那么第二个星期五之前第三个​​-第四-,其中第五个星期六之前的星期五未定义。

很显然,我会使用RRULE:FREQ=MONTHLY;BYDAY=FR;,但是如果我尝试使用BYMONTHDAY来遵循一些示例,则会遇到麻烦:28是有效的星期五之前-在2月的第一个第一个星期六,但在其他任何月份,第28个星期五将是第 5 个星期六之前的星期五。对于29(在leap年),3031同样。

目标是将其包含在Google日历中,据我所知,它支持显示无法编辑的ICS RRULE。因此,假设有可能,如何为该事件创建一个RRULE?我考虑了每个月的活动以及相应的规则。 31:1月,3月,5月,7月,8月,10月,12月30日:4月,6月,9月,11月可以,但是,年仍然是个问题:2月28日可能是第一个星期六之前的星期五或第5个星期六(例如2020年,所以我的前两个案例之一失败了。)

1 个答案:

答案 0 :(得分:1)

您必须使用BYDAY = FR才能步入正轨,并且由于您可以执行负BYMONTHDAY,因此以下方法可以解决问题:

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