Грубая ошибка? только первый элемент в списке используется для создания вхождений - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь сгенерировать списки вхождений для указанного 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 года и т. Д. В понедельник или Вторники или любые даты марта.

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

Спасибо!

1 Ответ

0 голосов
/ 05 июля 2018

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

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

...