Повторяющиеся события в календаре: разбор Javascript RFC 5545 - PullRequest
3 голосов
/ 12 ноября 2011

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

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

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

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

Ответы [ 4 ]

3 голосов
/ 01 августа 2013

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

https://github.com/jakubroztocil/rrule

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

1 голос
/ 14 декабря 2011

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

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

0 голосов
/ 03 сентября 2018

Мне понадобилась эта функция самостоятельно, наряду с поддержкой часовых поясов, поэтому я создал библиотеку машинописного текста / 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())
0 голосов
/ 16 марта 2013

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

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

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

...