iCalendar 事件重复规则运行:每两周一次,周一和周三,一天内每 30 分钟一次?

iCalendar recurrence rule for event to run: every two weeks, on Mondays and Wednesdays, each 30 minutes within a day of event?

我需要以 iCalendar (RFC5545) 规则的形式安排活动。 应该触发该事件:每两周一次,在周一和周三,在事件发生的一天内每 30 分钟触发一次。

到目前为止,我创建了这个规则字符串: FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,WE;BYHOUR=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, 17,18,19,20,21,22,23;每分钟=30

我希望活动 运行 "every two weeks, on Mondays and Wednesdays, every 30 mins within a day"。

但它实际上意味着运行:"every two weeks, on Mondays and Wednesdays, on every 30th minute within a day"

Dmitry,下面是一个可能的解决方案,但是您应该注意某些应用程序 (google?) 不接受循环分钟,这就是我认为您的问题的结果。

您必须将 RRULE 修饰符视为执行以下两项操作之一:1 扩展和 2 限制。例如:您的重复事件实际上是每 30 分钟重复一次。

参见 https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html 上 "Every 15 minutes for 6 occurrences" 和 "Every 20th Monday of the year" 的示例。

因此您的示例将是 FREQ=MINUTES;INTERVAL=30 'expanding',但您也希望 'limit' 仅在每个第二个星期一和星期三,因此添加一个 BYDAY:

FREQ=MINUTES;INTERVAL=30;BYDAY=2MO,2WE

此备忘单 https://icalevents.com/2447-need-to-know-the-possible-combinations-for-repeating-dates-an-ical-cheatsheet/ 可能有助于查看提供扩展或限制重复位的有效组合。

我相信您可以在一个小时内再向 BYMINUTE 添加一分钟,就像您通常在 crontab 中所做的那样:

FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,WE;BYHOUR=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23;BYMINUTE=0,30

这目前在 https://jakubroztocil.github.io/rrule/ 处产生以下 rule.all()

Wed,    10  Jul 2019    00:00:53    GMT
Wed,    10  Jul 2019    00:30:53    GMT
Wed,    10  Jul 2019    01:00:53    GMT
Wed,    10  Jul 2019    01:30:53    GMT
...
Wed,    10  Jul 2019    23:00:53    GMT
Wed,    10  Jul 2019    23:30:53    GMT
Mon,    15  Jul 2019    00:00:53    GMT
Mon,    15  Jul 2019    00:30:53    GMT
...
Mon,    15  Jul 2019    23:00:53    GMT
Mon,    15  Jul 2019    23:30:53    GMT
Wed,    17  Jul 2019    00:00:53    GMT
Wed,    17  Jul 2019    00:30:53    GMT
Wed,    17  Jul 2019    01:00:53    GMT

我相信这就是你想要的。