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
我相信这就是你想要的。
我需要以 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
我相信这就是你想要的。