在 ICS 文件中表示每周两次、事件长度不同的事件

问题描述 投票:0回答:1

我有一个每周两次的活动,我想为其生成 ICS 文件,以便用户可以将这一系列活动添加到他们的日历中。我很熟悉,例如

RRULE:FREQ=WEEKLY;BYDAY=MO,TH;
对于每周在周一和周四发生两次的活动,但这只能让我生成一个日历活动,其中周一的活动与周四的活动具有相同的开始时间和持续时间。

我希望能够代表例如每周周一上午 9 点至上午 10 点和周四下午 4 点至下午 6 点,无限期地作为某人日历中的一个重复事件(因此,如果删除此事件,我们可以使用取消方法来删除整个事件)。

是否存在可以代表上述事件的单个 ICS 文件的格式?如果没有,还有其他方法可以实现吗?

我尝试总体包含一个 RRULE(据我所知,每个 ICS 文件只能使用一次)和两个 VEVENT 来代表周一的事件和周四的事件,但这似乎不是有效的 ICS 文件/无法由我的邮件客户端打开。

icalendar rrule rfc5545
1个回答
0
投票

您可以使用

THISANDFUTURE
参数来执行此操作,一般方法是:

  1. 在基本
    RRULE
    对象中创建一个
    VEVENT
    ,该对象在周一重复出现,直到达到特定日期或实例数量。
  2. 在最后一个星期一的事件上创建一个例外 (
    EXDATE
    +
    RECURRENCE-ID
    ),将事件一直移回列表的开头,但现在是星期四的事件。此事件必须标记为
    THISANDFUTURE

请注意,这感觉很老套,我不会 100% 有信心所有客户都能很好地处理这个问题,但可能值得一试。

坦率地说,我认为更可靠的方法是只执行单个重复规则(例如,星期一事件),然后为每个星期四事件添加例外。这会大大增加对象的大小,但会更加可靠并且得到很好的支持。

© www.soinside.com 2019 - 2024. All rights reserved.