双月支付期的符合iCal的重复规则

时间:2019-02-23 21:07:43

标签: icalendar recurrence

我正在尝试创建一个符合iCal的重复规则,该规则应反映出每两个月获得薪水的人的发薪日。重复规则的详细信息可以在RFC上找到。

以下是规则:

  • 个人在每月的15号和最后一天获得报酬。
  • 如果每月的第15天或最后一天发生在周末,则应在此之前的星期五获得报酬。

到目前为止我所拥有的:

[
"RRULE:FREQ=MONTHLY;BYMONTHDAY=15;BYDAY=MO,TU,WE,TH,FR", // this will select the 15th if it's not on a weekend 
"RRULE:FREQ=MONTHLY;BYSETPOS=-1;BYDAY=MO,TU,WE,TH,FR;", // this correctly selects the last weekday of the month
]

此方法的问题是,如果15日是在周末,那么该事件将被忽略。

我不确定这是否可以建模。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

这个discussion解决了这个问题。

对于15号,我需要遵循以下规则:

RRULE:FREQ=MONTHLY;INTERVAL=1;BYSETPOS=-1;BYMONTHDAY=13,14,15;BYDAY=MO,TU,WE,TH,FR
  

那是15日之前的最后一个工作日,我必须加上13,14,15,因为从本质上讲,这是我可能出现的唯一可能的日期。 (最糟糕的情况是,第15个是星期日,因此前一个星期五是第13个

这两个规则共同满足了我的需求!