2014-02-05 4 views
0

Наша команда изучает правильный способ представления повторений, и мы наткнулись на RRule http://tools.ietf.org/html/rfc2445 (указанный в iCalendar rfc).RRule за каждые 29 числа месяца

Я пытаюсь написать rrule, в котором он позволит мне создавать даты, которые на 29 дней от первого дня каждого месяца. поэтому он будет выглядеть так: jan29, mar1, mar29, apr29.

Какое правильное выражение RRule здесь? или это даже возможно?

+0

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

ответ

0

Нет, неверные даты отбрасываются RRULE. Так что даже если вы могли бы сделать:

RRULE:FREQ=MONTHLY;BYMONTHDAY=29 

это будет просто пропущено для каждого февраля (за исключением високосного года).

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

1

Вы должны знать, что RFC5545 superseeds RFC2445.

Чтобы решить проблему високосных лет, вы должны использовать RRULE и BYYEARDAY и использовать отрицательные смещения.

Итак, сначала укажите 29-й день года, а затем 60-й день (31 (для ян) + 29 (для 1-го февраля)), затем, чтобы пройти круглый високосный год, отсчитываемый с конца года :

  • зная, что 31 декабря смещение в BYYEARDAY списке: -1
  • затем 29 декабря имеет смещение: -3
  • аналогично 29 ноября будет смещение: -33

Оттудасвойство записывается следующим образом:

RRULE: FREQ = YEARLY; ​​BYYEARDAY = 29,60, -278, ..., - 33, -3

0

Одним из вариантов было бы ремесленных ваш RRULE с INTERVAL=29. Что-то вроде:

RRULE:FREQ=DAILY;INTERVAL=29

Не все поддерживают клиента бесконечные повторяющиеся Анонсы множества, так что вы должны включать в себя компонент UNTIL или COUNT, а также в отелях.