iCalendar:如何从 RRULE 中排除时间范围?

iCalendar: How to exclude a time range from a RRULE?

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

例如 RRULE:

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

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

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

我建议试试

RRULE:FREQ=DAILY;BYHOUR=6,8,10,12,14,16,18,20

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

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

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