2016-09-19 6 views
1

Я ищу способ выразить подобную ситуацию в icalendar: событие происходит каждый месяц, через x дней после указанной даты.RRULE 20 дней после каждых 15-го числа в месяц, в icalendar (RFC 5545)?

например:.. 20 дней после 15-го дня в каждом месяце так, это может быть третий, четвёртый, пятый, шестой (например, февраль) если bymonthday может быть установлен на 35, это нормально

Но в перспективе это вон 't work. Как решить этот вопрос?

+0

На самом деле, я хочу представить время как: х ДНИ после ** BYMONTHDAY **. – Raymond

ответ

0

Возможно, вы попытаетесь добавить правило «; BYSETPOS = 20» в правило. le BYSETPOS при использовании его с BYDAY, но мне непонятно, как он обрабатывается при использовании BYMONTHDAY. Я не вижу другого варианта, смотрящего на спецификацию.

http://icalendar.org/iCalendar-RFC-5545/3-3-10-recurrence-rule.html

http://icalendar.org/iCalendar-RFC-5545/3-8-5-3-recurrence-rule.html

+0

спасибо, zcontent. Я пробовал этот путь, но это не сработает. в статье говорится, что BYSETPOS означает соединение N-го события с BYXXX. если я соединяю BYSETPOS с BYMONTHDAY, это означает 20-е вхождение, 15-й день в месяц, что означает 20 месяцев после первого дня. – Raymond

0

К сожалению, то, что вы хотите, не представляется возможным с RRULE.

Что вы хотите, это RRULE: FREQ = MONTHLY, BYMONTHDAY = 35. К сожалению, он недействителен - BYMONTHDAY не может превышать 31.

BYSETPOS также не будет работать. В RFC 5545, стр. 43 в разделе BYSETPOS следующее: «BYSETPOS работает с набором экземпляров повторения за один интервал правила повторения». Это означает, что вы не можете получить значение за пределами интервала. Если вы используете Monthly, вы ограничены одним месяцем.

Если вы хотите поэкспериментировать с некоторым RRULEs попробовать мое правило повторения (RRULE парсер) на http://balsoftware.net/index.php/open-source/rrule-parser/