Я читаю RFC 5545 и пытаюсь определить, как правильно найти набор вхождений.Допустим, у меня ЕЖЕНЕДЕЛЬНОЕ РУРЛЕ = 2 (каждые две недели).Я также указал часть правила BYDAY для вт, ср, чт.Давайте предположим, что моя дата начала 2011-04-07 (четверг), а моя дата окончания 2011-04-27 (ср).Очевидно, игнорируя менее значимые, чем дата, я думаю, что мой набор вхождений будет содержать: 2011-04-07, 2011-04-12, 2011-04-13, 2011-04-21, 2011-04-26, 2011-04-27.
Что меня отталкивает, так это заявление из RFC: «Часть правила WKST определяет день, с которого начинается рабочая неделя. Допустимые значения: MO, TU, WE, TH, FR, SA иSU. Это важно, когда ЕЖЕНЕДЕЛЬНЫЙ "RRULE" имеет интервал, превышающий 1, и указывается часть правила BYDAY. "
Итак, если мой WKST = MO, я вижу следствие из вышеприведенногоЗаявление о том, что неделя начинается не с даты начала, а с WKST.Это означает, что вместо использования недели, основанной на дате начала, в этом случае, чт-ср., Мне нужно начать с WKST и определить, какие события попадают в эту неделю (пн-вс) и каждую вторую неделю из THAT WKST.,Таким образом, для целей расчета моя начальная дата будет на самом деле 2011-04-04.Это происходит до даты начала, поэтому я прыгаю вперед до даты начала, но придерживаюсь недели Пн-Вс.Это означает, что мой набор вхождений на самом деле: 2011-04-07, 2011-04-19, 2011-04-20, 2011-04-21.Это сильно отличается от моего первоначального набора.
Кроме того, ЕСЛИ это правильный способ расчета, означает ли это также, что при расширении правил для других частот с интервалами> 1 я должен «начинать» в началеэтот период вместо даты начала.Включает ли ЕЖЕМЕСЯЧНЫЙ 1-й - последний день месяца даты начала.Включает ли YEARLY 1 января - 31 декабря года даты начала?
Я надеюсь, что есть гуру iCalendar ... Я не могу обернуть голову вокруг логики здесь.Спасибо.
ОБНОВЛЕНИЕ: Я создал несколько файлов .ics и импортировал их в календарь Google.Предполагая, что Google правильно их интерпретирует, я могу подтвердить, что расширение ЕЖЕМЕСЯЧНО с ИНТЕРВАЛОМ> 1 будет использовать 1-й до последнего дня месяца, а НЕ месяц, начиная с даты начала события.Правила YEARLY работают таким же образом, год начинается с 1 января по 31 декабря.Не то, что я изначально ожидал, но, надеюсь, это поможет кому-то еще.