使用fullcalendar导入iCal(ics)?

要使用fullcalendar加载.ics文件需要做什么? 不幸的是我无法使用php或.net。

你需要的是将你自己的扩展写入fullcalendar(类似于fullcalendar提供的gcal.js),你可以称之为ical.js

你应该知道写一个完整的解析器可能会非常耗费你所以你可能会考虑坚持使用谷歌日历作为你的后端,除非你有一个令人信服的理由。

如果你开始为fullcalendar开发自己的扩展,你可能想看看现有的jquery ical解析器( 这里 – 免责声明:我从未尝试过这个插件)

我设法做到了。 没有我想象的那么难。 我使用ical.js作为ics解析器。 解析后,我得到一个json对象,其中包含ics中的所有信息。 然后遍历它并根据FullCalendar Event对象的定义构造事件对象 。

这是代码:

$.get(calendarUrl).then(function (data) { // parse the ics data var jcalData = ICAL.parse(data.trim()); var comp = new ICAL.Component(jcalData); var eventComps = comp.getAllSubcomponents("vevent"); // console.log(JSON.stringify(eventComps)); // map them to FullCalendar events var events = $.map(eventComps, function (item) { if (item.getFirstPropertyValue("class") == "PRIVATE") { return null; } else { return { "title": item.getFirstPropertyValue("summary") + ";", "start": item.getFirstPropertyValue("dtstart").toJSDate(), "end": item.getFirstPropertyValue("dtend").toJSDate(), "location": item.getFirstPropertyValue("location") }; } }); // refresh the control calendarCtrl.fullCalendar('destroy'); calendarCtrl.fullCalendar({ events: events, timeFormat: "H:mm", displayEventEnd: true, eventRender: function (event, element) { // console.log(element); // append location if (event.location != null && event.location != "") { element.append("" + event.location + ""); } }, header: { left: 'title', center: '', right: 'today,month,basicWeek,listDay prev,next' } }); }); 

如果你有一个wordpress网站,那就有一个应用程序。 http://wordpress.org/extend/plugins/amr-ical-events-list/

如果您没有wordpress网站,请提供更多信息,以便人们可以更充分地了解您的情况 – 有一些专门的icalendar脚本 – 我暂时没有看过它们,所以无法保证任何例如: http : //phpicalendar.net/

您可以将其导入Google日历,然后将Google日历导入FullCalendar。