如何在FullCalendar中使用rrule创建正确的多日重复事件?
在FullCalendar中创建多日重复事件的正确方式
当给跨日事件添加rrule后,FullCalendar会默认忽略原事件的end字段,只以rrule的dtstart作为每个重复实例的起始时间,导致事件被截断成单日。要解决这个问题,核心是给事件明确指定时长,让每个重复实例都继承这个时长,从而保持跨日属性。
具体操作步骤:
- 计算原事件的时长:用原
end时间减去start时间,转换为ISO 8601时长格式(比如原事件从14点到次日15点,时长25小时,对应PT25H)。 - 在事件对象中添加
duration字段,可去掉原有的end字段(若保留end,duration优先级更高)。
修改后的事件对象示例:
{ "id": "324sdasdaseddssds", "title": "Test", "start": "2022-09-01T14:00:00.000Z", "isAllDay": null, "note": null, "duration": "PT25H", "rrule": { "freq": "WEEKLY", "interval": 2, "byweekday": [ "su", "mo", "tu", "we", "th", "fr" ], "dtstart": "2022-09-01T14:00:00.000Z" } }
这样设置后,FullCalendar会基于rrule生成的每个起始时间,自动加上指定的时长,生成正确的跨日重复事件,每个实例都会从当日14点持续到次日15点。
内容的提问来源于stack exchange,提问作者WildThing
相关产品推荐
相关产品推荐

