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

时间:2019-11-22 01:18:30

标签: vue.js fullcalendar rrule

着眼answer,它显示了如何在FullCalendar的字符串格式选项中包括EXDATE。

但是FullCalendar为长字符串提供了一种方便的替代方法。它们允许您改为使用对象。不幸的是,他们的documentation并没有涵盖其他内容:

  

rrule属性接受rrule lib接受的新内容   规则。参见文档。您可以指定字符串或对象。

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

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

我尝试提供特定日期的日期对象。我尝试提供一个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();
...

这将呈现重复的日期(时间略有减少),但是我尝试排除的日期仍然呈现。

1 个答案:

答案 0 :(得分:1)

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

(如果您的事件是“全天”样式的事件,没有特定的开始时间,那么只需将日期设置为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