В настоящее время я пытаюсь настроить свой собственный праздничный iCalendar, на который я могу подписаться, так как я не хочу зависеть от сторонних сервисов.
В настоящее время я пытаюсь сделать VEVENT
s на Рождество. 2-е, 3-е и 4-е пришествие, а также рождественские праздники прямолинейны, однако у меня большие проблемы с моделированием 1-го пришествия.
В частности, проблема в том, что первое пришествие может быть в ноябре и декабре (с 27 ноября по 3 декабря).
Как сделать повторяющееся событие (или, точнее, RRULE
), чтобы охватить все случаи 1-го пришествия?
Что я пробовал
Моя первая идея была такой:
FREQ=YEARLY;INTERVAL=1;BYMONTH=11,12;BYMONTHDAY=27,28,29,30,1,2,3;BYDAY=SU
Идея заключалась в том, чтобы просто выбрать одно воскресенье между 27 ноября и 3 декабря. Это, конечно, не работает, потому что BYMONTH
расширяет поиск на все дни ноября и декабря, а BYMONTHDAY
ограничивает поиск этими днями в обоих месяцах. т.е. 1 ноября, 2 ноября, ... 27 декабря, 28 декабря, ..., что, конечно, не то, что я хочу.
Затем я попытался использовать BYYEARDAY=331,332,333,334,335,336,337
вместо BYMONTHDAY
и BYMONTH
, но, к сожалению, мой сервер webdav (Nextcloud, который, насколько мне известно, использует Sabre. Я получил сообщение об ошибке «Недопустимое правило BYYEARDAY») не поддерживает это.
Моя следующая идея состояла в том, чтобы использовать несколько RRULE
- по крайней мере, я не видел ни одного отрывка в RFC, утверждающего, что разрешено не более одного RRULE
. Итак, я закончил с:
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=SU;BYMONTHDAY=27,28,29,30;BYMONTH=11
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=SU;BYMONTHDAY=1,2,3;BYMONTH=12
Тоже не работал. В крайнем случае я создал два отдельных VEVENT
, один с первым RRULE
выше, а другой со вторым RRULE
выше, но в остальном идентичными. Это сработало, но привело меня в замешательство.
Нет ли лучшего решения? Как бы вы это сделали?