是否可以在 iCalendar RFC5545 重复规则中使用 OR 表达式?

问题描述

我目前正在使用 iCalendar 规范 (RFC 5545) 来处理重复事件。

直到昨天,他们的重复规则满足了我的所有需求,但现在我很难实施以下规则:

每个月的第一个星期一每个月的星期三。

例如:

  • 2021-05-01 是星期六:活动将于 2021-05-03 星期一举行。
  • 2021-06-01 是星期二:活动将于 2021-06-02 星期三举行。
  • 2021-07-01 是星期四:活动将于 2021-07-05 星期一举行。
  • 2021-08-01 是星期日:活动将于 2021-08-02 星期一举行。

有没有办法定义这种“条件”规则?

解决方法

如果我正确理解了要求,那么它并不完全是有条件的。仅需要第一个星期一和第一个星期三的第一个。 BYSETPOS 就是针对这个的。

在这个例子中,它被用来计算最后一个工作日https://icalevents.com/2555-paydays-last-working-days-and-why-bysetpos-is-useful/

以你为例

RRULE:FREQ=MONTHLY;BYDAY=1MO,1WE;BYSETPOS=1

应该可以,

基本上,RRULE 将扩展所有第一个星期一和星期三,然后“合同”,即采用每对的第一个日期。

规范 https://www.ietf.org/rfc/rfc5545.txt 的第 43 页显示了“扩展”和“收缩”的优先级。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...