Повторное событие iCalendar RRULE

Я пытаюсь создать 2 события, которые имеют пользовательские повторы, но я не могу понять код.

  1. Мне нужно событие, которое происходит каждые 30 дней, но если 30-й день - это выходные, я бы хотел, чтобы он переместился в следующий понедельник. Но Мне также нужно, чтобы он оставался на первоначальном 30-дневном цикле.

  2. Мне также нужно событие, которое происходит за неделю до x дня месяца. Например, я хотел бы, чтобы событие происходило 3 недели до 15 числа каждого месяца.

Любая помощь будет большой.

3 голоса | спросил sevenomad 7 MaramMon, 07 Mar 2016 01:01:40 +03002016-03-07T01:01:40+03:0001 2016, 01:01:40

2 ответа


1

Чтобы уточнить, я имел в виду написать программу, которая создает iCalendar, но списком дат явно вместо использования RRULE.

Пока в Интернете есть несколько создателей iCal, я не думаю, что любой из они будут обрабатывать сложность требуемых правил, особенно первый.

Вы можете найти RRULE для вашего второго условия, но я нашел его проще просто написать программу.

В целом, хотя RRULE - хороший инструмент, он не может сделать все. Иногда вам просто нужно указать даты сами, что также дает вам больше возможностей для использования других форматов календаря который может не поддерживать RRULE.

Теперь я написал:

https://github.com/barrycarter/bcapps /блоб /ведущий /СТЕКА /bc-blank-ical.pl

и создал эти пустые iCalendars в соответствии с вашими правилами даты выше.

http://oneoff.barrycarter.info/webapps-90641-1.ics

http://oneoff.barrycarter.info/webapps-90641-2.ics

Важные замечания:

  • Обязательно проверьте мою работу: убедитесь, что даты в календаре даты, которые вы действительно хотите.

  • Для вашего первого правила я произвольно предположил, что первое событие было 1 февраля. Вы должны настроить мою программу для создания правильной (или свяжитесь со мной (см. профиль), и я могу это сделать).

  • Для вашего второго правила я создал события с 2016 по 2037 год включительно.

  • Чтобы использовать эти календари, выполните поиск /замену всех экземпляров _SUMMARY_ с фактическим резюме вашего события, все экземпляры _DESCRIPTION_ с описанием и т. д. Календари I создаются только даты и произвольно сгенерированные UID.

  • Вы также должны изменить PRODID каждого календаря.

Пока я лично не возражаю, я не уверен, что этот вопрос на самом деле принадлежит на webapps, поскольку его не касается существующего веб-приложения.

ответил barrycarter 9 MarpmWed, 09 Mar 2016 19:33:47 +03002016-03-09T19:33:47+03:0007 2016, 19:33:47
0

Для первого вы можете привести пример. Например, вы хотите, чтобы он переместился на следующий месяц, если необходимо?

Для второго я предлагаю следующее заданное x = 2

  

RRULE: FREQ = ЕЖЕМЕСЯЧНОЕ; BYDAY = МО, Вт, Ср, TH, FR; BYMONTHDAY = 10,11,12; BYSETPOS = -1

Как правило, это сказать, что это может произойти:

  • 3 дня, 4 дня или 5 дней до 15-го (BYMONTHDAY=10,11,12)
    • 5 дней в случае, если за 3-й день до 15-го - воскресенье.
  • Также вы говорите, что правила вашего присутствия только в будние дни BYDAY=MO,TU,WE,TH,FR
  • из возможных вариантов за один месяц FREQ=MONTHLY;
  • потребуется более поздний BYSETPOS=-1

например:.

  • Если 13-я пятница, правило вернет 13-е
  • , если 13-я суббота, правило вернет 12-й
  • , если 13-е воскресенье, правило вернет 11-й
ответил oberron 8 J0000006Europe/Moscow 2016, 09:11:44

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132