#fullcalendar #rrule
#полный календарь #rrule
Вопрос:
Я пытаюсь создать rrule для моего события fullcalendar, которое происходит во 2-й понедельник, среду и пятницу месяца для каждого месяца.
Вот rrule, которое я пробовал
ПРАВИЛО: FREQ = ЕЖЕМЕСЯЧНО; COUNT = 10; INTERVAL = 1; WKST = SU;BYDAY = MO, WE, FR;BYSETPOS=2
events: [{
title: 'rrule event',
rrule: {
freq: RRule.MONTHLY,
count: 10,
interval: 1,
wkst: RRule.SU,
byweekday: [RRule.MO, RRule.WE, RRule.FR],
bysetpos: [2]
},
duration: '02:00',
rendering: 'inverse-background'
}
],
Это то, что я получаю
1 Fri, 03 May 2019 12:33:53 GMT
2 Wed, 05 Jun 2019 12:33:53 GMT
3 Wed, 03 Jul 2019 12:33:53 GMT
4 Mon, 05 Aug 2019 12:33:53 GMT
5 Wed, 04 Sep 2019 12:33:53 GMT
6 Fri, 04 Oct 2019 12:33:53 GMT
7 Mon, 04 Nov 2019 12:33:53 GMT
8 Wed, 04 Dec 2019 12:33:53 GMT
9 Fri, 03 Jan 2020 12:33:53 GMT
10 Wed, 05 Feb 2020 12:33:53 GMT
Ожидается, что
1 Mon, 08 Apr 2019
2 Wed, 10 Apr 2019
3 Fri, 12 Apr 2019
4 Mon, 13 May 2019
5 Wed, 08 May 2019
6 Fri, 10 May 2019.........
Ответ №1:
RFC 5545, раздел 3.3.10. гласит:
Каждому значению по дням также может предшествовать положительное ( n) или отрицательное (-n) целое число. Если присутствует, это указывает на n-е появление определенного дня в ЕЖЕМЕСЯЧНОМ или ГОДОВОМ «RRULE».
Таким образом, правило, которое вы ищете, буквально определяет 2-й понедельник ( 2MO
), среду ( 2WE
) и пятницу ( 2FR
) каждого месяца.
FREQ=MONTHLY;COUNT=10;BYDAY=2MO,2WE,2FR
(нажмите, чтобы увидеть результаты)
Обратите внимание, что это значение по INTERVAL=1
умолчанию и WKST=SU
в данном случае бессмысленно, поэтому вы можете просто опустить их.
Кстати, ваше правило в основном гласит, что из всех понедельников, сред и пятниц месяца берите второй экземпляр в этом месяце.