繁体   English   中英

ical4j - 为特定工作日的每月定期会议创建定期规则

[英]ical4j - create recurrence rule for a monthly recurring meeting on a specific weekday

在 ical4j(3.2.3) 中创建重复规则时,我遇到了意外行为。

我对 ical4j 很陌生,但我已经研究过https://www.rfc-editor.org/rfc/rfc5545#section-3.3.10 ,这里的另一个问题引用了它: https ://stackoverflow.com/一个/7800560/19390104 不过,我找不到解决方案。

目的是在特定的工作日每月创建一次会议。 第一个日期应该是下一个工作日和一个月后的下一个日期。

让我举一个简单的例子:

开始日期:2022 年 6 月 22 日。 工作日:星期三。 会议应每月重复 3 次。

预期结果将是:[06-22-2022, 07-20-2022, 08-17-2022]。

为此,我尝试了以下重复规则: "FREQ=MONTHLY;BYDAY=WE;COUNT=3"

实际结果如下所示:[06-22-2022, 06-29-2022, 07-06-2022]。 因此,当使用 BYDAY 重复规则时,似乎实际上忽略了每月频率,并且重复基于每周频率。

有人可以帮助我并告诉我,为什么忽略每月频率以及我应该如何设计适用于所需用例的重复规则?


更新:我通过使用每周频率,每 4 周得到正确的结果。

是否只有在定义了特定的一周时,工作日的每月重复才有效? 所以 ical4j 知道,每月模式应该在哪一周重复?

例如:“FREQ=MONTHLY;BYDAY=4WE;COUNT=3”表示该月的每个第 4 个星期三(不过,它返回的结果不同,只计算从第一个日期开始的周数)?

我认为问题在于 COUNT 无法按照您对 FREQ=MONTHLY 的预期工作。 您共享的 rfc 部分中有一个表格,指示出现是有限(减少)还是扩展(复制)。 对于此组合,COUNT 会将每月的天数扩展到每月的三天。

所以我认为在本月的第一个星期三你可以尝试:

频率=每月;每天=1WE

或每月的最后一个星期三:

频率=每月;每天=-1WE

要限制出现次数,您可以使用 UNTIL 或指定 DTEND 属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM