事件运行的iCalendar重复规则:每两周,在星期一和星期三,事件一天之内每30分钟?

时间:2019-07-05 18:21:27

标签: scheduling icalendar rrule

我需要以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; BYMINUTE = 30

我希望该活动“在一天中的每30分钟内,每两周的周一和周三进行”。

但这实际上意味着要运行:“每两周,星期一和星期三,一天中的每30分钟一次”

2 个答案:

答案 0 :(得分:0)

德米特里,下面是一个可能的解决方案,但是您应该注意,某些应用程序(谷歌?)不接受定期记录,这是我认为您的问题所导致的。

您必须考虑RRULE修饰符是做以下两件事之一:1展开和2限制。例如:您的重复活动实际上每30分钟重复一次。

请参见示例https://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html上的“每15分钟发生6次”和“每年的每年第20个星期一”。

因此,您的示例将是FREQ = MINUTES; INTERVAL = 30“扩展”,但是您还想将其“限制”为仅在第二个星期一和星期三,因此添加一个BYDAY:

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

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

答案 1 :(得分:0)

我相信您可以像在crontab中一样,在一个小时内向BYMINUTE添加一分钟:

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

我相信这是您想要的。