Грубая ошибка? только первый элемент в списке используется для создания вхождений

Я пытаюсь создать списки вхождений для указанного RRULE в PHP, используя несколько разных библиотек (когда а также RRule).

Спецификация RRule (также увидеть это) указывает, что мы можем указать несколько элементов, разделенных запятыми для большинства свойств:

(BYSECOND" "=" byseclist )
( ";" "BYMINUTE" "=" byminlist )
( ";" "BYHOUR" "=" byhrlist )
( ";" "BYDAY" "=" bywdaylist )
( ";" "BYMONTHDAY" "=" bymodaylist )
( ";" "BYYEARDAY" "=" byyrdaylist )
( ";" "BYWEEKNO" "=" bywknolist )
( ";" "BYMONTH" "=" bymolist )
( ";" "BYSETPOS "=" bysplist )

Обратите внимание, как они ссылаются на «списки» значений, и спецификация, кажется, указывает, что все значения могут быть разделены запятыми. Например, BYMONTH = 1,2,3 будет означать январь, февраль и март.

Тем не менее, когда я пытаюсь сгенерировать вхождения RRULE, как этот:

FREQ=YEARLY;INTERVAL=1;BYDAY=SU,MO,TU;BYSETPOS=1;BYMONTH=2,3

Я ожидал бы получать ежегодные события в воскресенье, понедельник и вторник, в феврале и марте.

Однако эти библиотеки возвращают только одно вхождение, соответствующее первому дню / месяцу в списке. Таким образом, если мы назначим дату начала 4 февраля 2018 года и создадим события в течение следующих нескольких лет, мы получим только 4 февраля 2018 года, 3 февраля 2019 года, 2 февраля 2020 года и т. Д. В понедельник или Вторники или любые даты марта.

Может ли кто-то пролить свет на то, является ли это ошибкой или действительно ожидаемым поведением?

Спасибо!

0

Решение

Может ли кто-то пролить свет на то, является ли это ошибкой или действительно ожидаемым поведением?

Я автор PHP-rrule, так что спасибо за использование моей библиотеки! Я могу пролить немного света: у вас есть BYSETPOS=1 который эксплицитно ограничить набор результатов первым появлением в списке. Так что да, это ожидаемое поведение. Зачем добавил BYSETPOS если бы вы хотели все?

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]