如何通过对象选项在完整日历中使用 EXDATE

How to use EXDATE in Full Calendar via object option

正在看这个, it is shown how to include EXDATE in the string format option in FullCalendar

但是 FullCalendar provides a convenient alternative to the long string. They allow you to use an object instead. Unfortunately their documentation 并没有真正涵盖除此之外的任何内容:

The rrule property accepts whatever the rrule lib accepts for a new RRule. See the docs. You can specify a string or an object.

我们使用的事件已经很繁重了,我希望避免增加额外的复杂性,因为这会涉及我编写某种映射器来生成此字符串。

我想知道如何使用对象格式从重复规则中排除日期列表。

我试过提供特定日期的日期对象。我试过提供一个 ISO 字符串。我试过将它们包含在一个数组中。

更新

这是我正在尝试的最新版本:

...
 const rruleSet = new RRuleSet();

 rruleSet.rrule(new RRule(options));
 // Repeat every day except on Nov 22, 2019
 rruleSet.exdate(new Date(Date.UTC(2019, 10, 22)));

 event.duration = {
    seconds: event.event_length,
 };

 event.rrule = rruleSet.toString();
...

这会呈现重复日期(时间有点偏差),但我试图排除的日期仍然会呈现。

为了使您的排除规则与生成的事件相匹配,您还必须包括具体时间。我希望这是因为如果您的事件在一天中重复多次,它就不知道您要排除哪一个。

(如果您的活动是 "all-day" 风格的活动,没有具体的开始时间,那么只在 exdate 中设置日期就可以了。)

因此,改变

rruleSet.exdate(new Date(Date.UTC(2019, 10, 22)));

rruleSet.exdate(new Date(Date.UTC(2019, 10, 22, 10, 30)));

会解决你的问题

演示:https://codepen.io/ADyson82/pen/jOORaOZ