EXDATE 是否不包含在完整日历的规则中
Is EXDATE not included in rrule for Full Calendar
我有一个周期性日历事件发生在每个月的第 4 个星期五,我想排除 1 个星期五事件。我已尝试 EXDATE
,但出现错误
Failure passing JSON
没有 EXDATE
规则工作正常。
以下是我在完整日历中用于制作活动的详细信息
{
start: "2019-07-06T09:00:00+10:00",
end: "2019-07-06T15:00:00+10:00",
rrule: "FREQ=WEEKLY;DTSTART=20190607T090000;EXDATE=20190705T090000;INTERVAL=4;BYDAY=FR",
title: "Weed Spraying",
description: "June, Harry, Pat, George, Valda, Helen, Karen, Ken",
color: "red",
url: "./?action=detail_view&id=22",
duration: "06:00"
}
不太了解这种特殊的 JSON 格式,但 EXDATE 是 属性,不是 RRULE 的参数。
请尝试
rrule: "FREQ=WEEKLY;DTSTART=20190607T090000;INTERVAL=4;BYDAY=FR\nEXDATE=20190705T090000"
可以添加例外。您只需要正确格式化 RRule 字符串:
DTSTART:20190610T103000\nRRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20190801\nEXDATE:20190618T103000Z\nEXDATE:20190619T103000
观看此 code sandbox 演示
好的,我解决了,@Arnaud 是对的,RRULE、EXDATE 和 DTSTART 是属性而不是 rrule 的参数,但它们确实进入了带有 \n 换行符的 FullCalendar 的 rrule 属性,它们也需要一个 : NOT =。示例
rrule: 'DTSTART:20190308T120000Z\nRRULE:FREQ=WEEKLY;UNTIL=20220330\nEXDATE:20190614T120000Z\nEXDATE:20190628T120000Z'
请注意有 2 个 EXDATE 属性,对于要排除的每个日期,您需要放置一个 EXDATE。
我花了 3 天时间尝试让它工作,希望这能帮助节省其他人的时间。
此格式也可用于多个 EXDATE:
rrule: "DTSTART:20201114T000000Z\nRRULE:FREQ=WEEKLY\nEXDATE:20201121T000000Z,20201128T000000Z"
此字符串使用 rrule.js 库中的 rruleSet.exdate(new Date(Date.UTC(2012, 5, 1, 10, 30)))
格式化,在规则对象中添加多个 EXDATE,然后使用 .toString()
方法
另外,请注意,为 RRule 日期时间添加 'Z' 字符现在适用于 v5.4.0
在最新版本 5.4.0 中,以下代码将起作用:
DTSTART:20201101T040000Z
RRULE:FREQ=每周;间隔=1;每天=TU
EXDATE:20201110T040000Z,20201124T040000Z
FullCalendar 现在支持多个 exdate
我使用 RRule 和 RRuleSet 生成规则字符串:
*注意:您必须小心夏令时。这就是为什么我不得不调整几次。不要关注我的特定日期对象。这只是使用 RRuleSet 和 RRule 支持多个 exdates 的解决方案的示例。
const rruleSet = new RRuleSet();
rruleSet.rrule(new RRule({
freq: Frequency.WEEKLY,
interval: 1,
byweekday: [RRule.TU],
dtstart: new Date(2020, 10, 1, 0, 0, 0, 0)
}));
rruleSet.exdate(new Date(2020, 10, 9, 23, 0, 0, 0));
rruleSet.exdate(new Date(2020, 10, 23, 23, 0, 0, 0));
console.log(rruleSet.toString());
这是问题编号:
https://github.com/fullcalendar/fullcalendar/issues/5726
我有一个周期性日历事件发生在每个月的第 4 个星期五,我想排除 1 个星期五事件。我已尝试 EXDATE
,但出现错误
Failure passing JSON
没有 EXDATE
规则工作正常。
以下是我在完整日历中用于制作活动的详细信息
{
start: "2019-07-06T09:00:00+10:00",
end: "2019-07-06T15:00:00+10:00",
rrule: "FREQ=WEEKLY;DTSTART=20190607T090000;EXDATE=20190705T090000;INTERVAL=4;BYDAY=FR",
title: "Weed Spraying",
description: "June, Harry, Pat, George, Valda, Helen, Karen, Ken",
color: "red",
url: "./?action=detail_view&id=22",
duration: "06:00"
}
不太了解这种特殊的 JSON 格式,但 EXDATE 是 属性,不是 RRULE 的参数。 请尝试
rrule: "FREQ=WEEKLY;DTSTART=20190607T090000;INTERVAL=4;BYDAY=FR\nEXDATE=20190705T090000"
可以添加例外。您只需要正确格式化 RRule 字符串:
DTSTART:20190610T103000\nRRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20190801\nEXDATE:20190618T103000Z\nEXDATE:20190619T103000
观看此 code sandbox 演示
好的,我解决了,@Arnaud 是对的,RRULE、EXDATE 和 DTSTART 是属性而不是 rrule 的参数,但它们确实进入了带有 \n 换行符的 FullCalendar 的 rrule 属性,它们也需要一个 : NOT =。示例
rrule: 'DTSTART:20190308T120000Z\nRRULE:FREQ=WEEKLY;UNTIL=20220330\nEXDATE:20190614T120000Z\nEXDATE:20190628T120000Z'
请注意有 2 个 EXDATE 属性,对于要排除的每个日期,您需要放置一个 EXDATE。 我花了 3 天时间尝试让它工作,希望这能帮助节省其他人的时间。
此格式也可用于多个 EXDATE:
rrule: "DTSTART:20201114T000000Z\nRRULE:FREQ=WEEKLY\nEXDATE:20201121T000000Z,20201128T000000Z"
此字符串使用 rrule.js 库中的 rruleSet.exdate(new Date(Date.UTC(2012, 5, 1, 10, 30)))
格式化,在规则对象中添加多个 EXDATE,然后使用 .toString()
另外,请注意,为 RRule 日期时间添加 'Z' 字符现在适用于 v5.4.0
在最新版本 5.4.0 中,以下代码将起作用:
DTSTART:20201101T040000Z RRULE:FREQ=每周;间隔=1;每天=TU EXDATE:20201110T040000Z,20201124T040000Z
FullCalendar 现在支持多个 exdate
我使用 RRule 和 RRuleSet 生成规则字符串: *注意:您必须小心夏令时。这就是为什么我不得不调整几次。不要关注我的特定日期对象。这只是使用 RRuleSet 和 RRule 支持多个 exdates 的解决方案的示例。
const rruleSet = new RRuleSet();
rruleSet.rrule(new RRule({
freq: Frequency.WEEKLY,
interval: 1,
byweekday: [RRule.TU],
dtstart: new Date(2020, 10, 1, 0, 0, 0, 0)
}));
rruleSet.exdate(new Date(2020, 10, 9, 23, 0, 0, 0));
rruleSet.exdate(new Date(2020, 10, 23, 23, 0, 0, 0));
console.log(rruleSet.toString());
这是问题编号: https://github.com/fullcalendar/fullcalendar/issues/5726