首页 > 解决方案 > iCalendar:如何从 RRULE 中排除时间范围?

问题描述

我想从 RRULE 中排除时间范围。

例如 RRULE:

DTSTART;VALUE=DATE-TIME:20210104T142711Z
RRULE:FREQ=HOURLY;INTERVAL=2

将每两个小时创建一个重复事件,但我想排除夜间的一段时间,例如从 22:00 到 6:00。

我已经阅读了如何使用 EXDATE 属性排除日期,但我没有在 RFC 中找到有关如何排除一段时间的信息。这是在某处记录的还是有推荐的方法?

标签: icalendar

解决方案


我建议尝试

规则:频率=每日;按小时=6,8,10,12,14,16,18,20

并在您希望处理此问题的所有应用程序中进行测试。某些日历应用程序不执行 FREQ=HOURLY。EG:最后我看了一下,谷歌没有做 FREQ=HOURLY。我不知道BYHOUR。测试应用程序是否会做 BYHOUR?

https://icalendar.org/iCalendar-RFC-5545/3-3-10-recurrence-rule.html 解释了重复次数的限制或扩展。

如果您的预期接收应用程序不接受这些,那么另一种方法可能是每小时生成多个 VEVENTS,全部使用 FREQ=DAILY。


推荐阅读