我需要将重复活动整合到全日历的改编版本中,该版本具有添加的javascript模块,允许离线事件浏览。
我正在寻找一个可以根据RFC 5545解析重复事件的JavaScript库。
我需要能够列出2个日期(开始日期和结束日期)之间发生的所有重复事件,使用RRULE和EXDATE并解释每日,每周,每月和每年的重复。
我花了几个小时寻找无用的东西,我不想重新发明轮子......任何人都可以指出我正确的方向为现有的JavaScript解析器吗?
答案 0 :(得分:3)
我检查了skyporters rrule_parser并发现它不支持所有规则(特别是,它不会正确地执行BYDAY)。我发现了一个很棒的选择:
https://github.com/jakubroztocil/rrule
他们正在积极支持这个图书馆,并有一个很棒的demo website,可以显示所有功能。您可以使用5545格式或纯文本进行解析(使用nlp扩展名)。它是功能丰富的,据我所知,功能齐全。
答案 1 :(得分:1)
查看https://github.com/skyporter/rrule_parser。
我希望它会对你有所帮助。
答案 2 :(得分:0)
这是jquery的重复小部件,它解析/创建RFC5545兼容的重复字符串。
https://github.com/collective/jquery.recurrenceinput.js
但是,它不会将重复规则扩展为发生日期。但是它包含一个python服务器,可以使用python-dateutil来为你做这个:http://labix.org/python-dateutil答案 3 :(得分:0)
我本人需要此功能以及时区支持,所以我制作了一个打字稿/ JavaScript库:rSchedule。
当前支持除BYSETPOS,BYWEEKNO和BYYEARDAY之外的所有ICAL重复规则。支持与ICAL格式的序列化以及大量额外的内容。
示例:
const rule = new RRule({
frequency: 'YEARLY',
byMonthOfYear: [2, 6],
byDayOfWeek: ['SU', ['MO', 3]],
start: new Date(2010,1,7),
}, {
dateAdapter: StandardDateAdapter
})
let index = 0;
for (const date of rule.occurrences()) {
date.toISOString()
index++
if (index > 10) break;
}
rule.occurrences({
start: new Date(2010,5,7),
take: 5
})
.toArray()
.map(date => date.toISOString())