【问题标题】:How to use EXDATE in Full Calendar via object option如何通过对象选项在完整日历中使用 EXDATE
【发布时间】:2019-11-22 01:18:30
【问题描述】:

看看这个answer,它显示了如何在FullCalendar 的字符串格式选项中包含EXDATE。

但是FullCalendar 为长字符串提供了一种方便的替代方案。它们允许您改用对象。不幸的是,他们的documentation 并没有真正涵盖除此之外的任何内容:

rrule 属性接受 rrule 库接受的任何新的 规则。请参阅文档。你可以指定一个字符串或一个对象。

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

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

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

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

【问题讨论】:

  • 您是否直接查阅过任何 rrule 文档?我们可以看看你尝试了什么,还有一些输入数据的例子,以及预期的输出。谢谢。
  • 谢谢,我已经更新了描述。
  • 我在下面发布了一个解决方案,它有帮助吗?
  • @ADyson,谢谢!这解决了它。有关详细信息,请参阅他的回答下的评论。

标签: vue.js fullcalendar rrule


【解决方案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

【讨论】:

  • 我最终不得不在这里使用它。原来该对象仅用于选项。超出此范围的任何复杂性都需要使用 rruleset 类来生成字符串。
  • @Philll_t 是的,看起来 fullCalendar 只接受 RRule 对象,出于某种原因不接受 RRuleSet 对象,但它会接受一个包含两者所有可能选项的字符串。不知道为什么会这样。很高兴它对你有帮助
猜你喜欢
  • 2019-10-28
  • 2017-10-19
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2017-12-13
  • 1970-01-01
  • 2017-04-22
  • 1970-01-01
相关资源
最近更新 更多