Повторяющиеся события в календаре: анализ JavaScript RFC 5545

Мне нужно интегрировать повторяющиеся события в адаптированную версию полного календаря с добавленным модулем javascript, который позволяет просматривать события в автономном режиме.

Я ищу библиотеку javascript, которая может анализировать повторяющиеся события в соответствии с RFC 5545.

Мне нужно иметь возможность перечислить все повторяющиеся события, которые происходят между двумя датами (дата начала и дата окончания), используя RRULE и EXDATE и интерпретируя ежедневные, еженедельные, ежемесячные и ежегодные повторения.

Я часами искал что-то, чего не было, и я не хочу изобретать велосипед .... Может ли кто-нибудь указать мне правильное направление для существующего парсера javascript?


person wouter    schedule 12.11.2011    source источник


Ответы (4)


Я проверил скайпортеры rrule_parser и обнаружил, что он не поддерживает все правила (в частности, он не будет работать BYDAY должным образом). Я нашел фантастическую альтернативу:

https://github.com/jakubroztocil/rrule

Они активно поддерживают эту библиотеку и имеют отличный демонстрационный веб-сайт, демонстрирующий все функциональные возможности. Вы можете выполнять синтаксический анализ как из формата 5545, так и из обычного текста (с использованием расширения nlp). Он многофункциональный и, насколько я могу судить, полностью функциональный.

person Dusty    schedule 01.08.2013

загляните в https://github.com/skyporter/rrule_parser.

Надеюсь, это вам поможет.

person skyporter    schedule 14.12.2011

вот виджет повторения для jquery, который анализирует / создает строки повторения, совместимые с RFC5545.

https://github.com/collective/jquery.recurrenceinput.js

однако он не расширяет правило повторения на даты появления. но он включает в себя сервер python, который может сделать это за вас, используя python-dateutil: http://labix.org/python-dateutil

person johannes raggam    schedule 15.03.2013

Мне самому нужна была эта функция, а также поддержка часовых поясов, поэтому я создал библиотеку машинописного текста / javascript: rSchedule.

В настоящее время поддерживаются все правила повторения ICAL, кроме BYSETPOS, BYWEEKNO и BYYEARDAY. Поддерживает сериализацию в / из формата 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())
person John    schedule 03.09.2018