2016-07-03 12 views

ответ

0

Я предполагаю, что вы имеете в виду «последний рабочий день в пятницу предыдущего месяца», и в этом случае я не думаю, что это возможно. Это означало бы, что в течение нескольких месяцев есть два случая, когда у других есть 0, что на самом деле не работает.

Вы можете легко сделать первый рабочий день месяца (1-е, или в первый понедельник):

 
FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=1 

Или вы могли бы сделать всегда последний рабочий день месяца:

 
FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1 
+0

Сценарий 1 - это то, что мне нужно I.e. в некоторых месяцах есть 2 случая, в то время как в других нет. – George

1

Если я вас правильно понял следующее RRULE следует сделать трюк:

FREQ=MONTHLY;BYDAY=1MO,1TU,1WE,1TH,1FR,-1FR;BYMONTHDAY=1,-1,-2 

См next 100 instances

Это в основном делает две вещи:

  1. итерируем первый будний день, приходящийся на 1-й день месяца
  2. итерация последняя пятница каждого месяца, который падает на последний или второй последний день месяца (в случае чего 1-й из следующего месяца приходится на субботу или воскресенье).

Несколько более короткая версия, которая должна привести к тем же результатам является

FREQ=MONTHLY;BYDAY=1MO,1TU,1WE,1TH,FR;BYMONTHDAY=1,-1,-2 

Это просто перебирает каждую пятницу, но только сохраняет те, которые попадают на первый, последний и 2-й последний день каждого месяца. Хотя похоже, что служба повторного расширения выше не согласна. Вероятно, это ошибка.

+0

Это один очень умный рулет, молодец! – rlanvin