【发布时间】:2020-02-26 09:57:48
【问题描述】:
rrule 插件的规范说直到日期是包容性的。我没有看到。我是不是看错了?
https://github.com/jakubroztocil/rrule
如果给定,这必须是一个 Date 实例,它将指定重复的限制。如果重复实例恰好与 until 参数中给出的 Date 实例相同,则这将是最后一次出现。
我有这个测试:
calendaring.testRecur = function(dayOrWeek){
var rruleDataWeekly = {
freq: 'WEEKLY',
interval: 1,
byweekday: [ 'MO', 'WE', 'FR' ],
dtstart: '2019-11-01T10:30:00',
until: '2019-11-15'
};
var rruleDataDaily = {
freq: 'DAILY',
interval: 1,
count: 5,
dtstart: '2019-11-04T09:30:00',
};
var rruleData = dayOrWeek === "day" ? rruleDataDaily : rruleDataWeekly;
var title = dayOrWeek === "day" ? "Test Daily" : "Test Weekly";
var newEvent = {
title: title,
duration: "00:45",
rrule: rruleData
};
calendaring.calendar.addEvent(newEvent);};
这是我的日历配置:
calendaring.calendar = new Calendar(calendarEl, {
events: '/myurl',
plugins: ['rrule', 'interaction', 'dayGrid', 'timeGrid', 'bootstrap', 'list'],
header: {
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay, listDay',
},
defaultView: 'timeGridWeek',
slotDuration: '00:15',
slotLabelInterval: '01:00',
minTime: '06:00',
maxTime: '21:00',
allDaySlot: false,
slotEventOverlap: false,
buttonText: {
today: 'Today',
month: 'Month',
week: 'Week',
day: 'Day',
list: 'List',
},
themeSystem: 'bootstrap',
editable: true,
selectable: true,
droppable: true,
fixedWeekCount: false,
hiddenDays: [ 0, 6 ],
eventLimit: 6,
});
calendaring.calendar.render();};
【问题讨论】:
-
我现在没有时间测试它,但是 fullCalendar 认为结束日期是排他性的……所以那里可能存在冲突的规则。我不知道 fullCalendar 在内部是如何处理的。
-
谢谢。这是第一个猜测,但所有 rrule 文档都交给了此处引用的文档。这就是我寻求澄清的原因。
-
您可以在jakubroztocil.github.io/rrule 测试您的规则,它会为您提供输出。我认为,这应该告诉您您的假设是否正确,以及给您带来问题的是 rrule 还是 fullCalendar。
-
感谢您的链接,我一直在那里进行测试。这似乎是一个 FullCalendar 问题。此规则在截止日期结束:new RRule({ freq: RRule.WEEKLY, dtstart: new Date(Date.UTC(2019, 10, 1, 15, 0, 0)), until: new Date(Date.UTC( 2019, 10, 15, 15, 0, 0)), 间隔: 1, byweekday: [RRule.MO, RRule.WE, RRule.FR] })
-
FTR,就 RFC 5545 而言,您的规则将是无效的,因为
UNTIL组件必须有一个时间组件,如果DTSTART有一个。
标签: javascript calendar fullcalendar fullcalendar-4 rrule