周末的RRULE包括一个月的第一个星期日

时间:2018-04-02 19:00:45

标签: icalendar rrule

我们每年都会在周末(Fr-Su)举办活动,其中包括6月的第一个星期天。我如何创建表达这三天(全天活动)的 iCalendar活动

为第一个星期日创建规则很容易。但是对于星期六和星期五,我没有成功创建一个倒退的规则(RFC 5545INTERVALCOUNT必须是正面的。)而且我想不出一个不同的表达从星期五开始 - 可能是五月的最后一个星期五,也是六月的第一个星期五。

2 个答案:

答案 0 :(得分:1)

RFC 5545中的RRRULE规范在这方面缺乏。 INTERVALCOUNT值适用于重复事件,而不是事件本身。在尝试定义美国日和黑色星期五",即11月的第4个星期四(感恩节后的星期五)后的第二天,我遇到了类似的问题。 11月的第4个星期五可能发生在第4个星期四或前一周的第二天。我找不到为这种情况制作RRULE的方法。

我相信您需要单独编写事件代码,而不是使用重复规则。

答案 1 :(得分:0)

RRULE:FREQ = YEARLY; BYDAY = FR; BYMONTH = 5,6; BYSETPOS = 2; BYMONTHDAY = -2,-1,1,2,3,4,5,6,7'似乎可以解决问题

How can I write an ICS file for the Friday before the first Saturday of the month?使我走上了正确的轨道:有了“ BYMONTHDAY”,我可以从月底开始倒数。

下个月第一个星期日之前的星期五可以是上个月的最后一天或倒数第二天,或者直到该月的第5天。如果我包括五月和六月,我将得到一个包含日期的集合。 “ BYSETPOS”使我可以选择找到的第二个星期五。为了使第二天始终是我想要的日子,我将月份的第6天和第7天包括在内,这使我在5月的第一个星期五保持稳定。无论如何,6月可能匹配的其他星期五都会被“ BYSETPOS”丢弃。

将其扩展到星期六很简单,六月的第一个星期日很简单。

我用rrule.js开发了规则

https://jakubroztocil.github.io/rrule/#/rfc/RRULE:BYDAY=FR;BYMONTH=5,6;BYSETPOS=2;BYMONTHDAY=-2,-1,1,2,3,4,5,6,7

相关问题