2014-11-22 2 views
0

Я новичок в материалах icalendar ... размышляя, как обрабатывать исключение правила повторения. Если у меня есть правило ежедневного повторения для события 9:00 утра, которое происходит в понедельник, и я хочу изменить время начала события в Wed, добавлю дату наступления, рассчитанную rrule в среду, чтобы выдать, а затем создать совершенно новое самостоятельное событие?Хранение iCalendar Исключения

Проблема с моими «событиями» - это фактически заказы на работу, которые живут в отдельных документах базы данных, поэтому создание нового события таким образом нарушит связь между теперь автономным рабочим порядком и другими экземплярами.

Я также рассмотрел вопрос о добавлении даты наступления, рассчитанной rrule для среды, чтобы выдать, а затем добавив новое время-дату и используя его как recurrenceId для затронутого экземпляра, но не уверен, что это тоже так. Похоже, это сработает.

Thansk за вашу помощь!

ответ

0

Вы можете просто создать исключение, создав еще один VEVENT, который имеет то же самое UID. Например, это ежедневное повторяющееся событие, в котором первая среда переопределена. Я удалил некоторые из необходимых свойств и добавил отступы для читаемости:

BEGIN:VCALENDAR 
    BEGIN:VEVENT 
    UID:foo-bar 
    DTSTART:20141124T090000Z 
    RRULE:FREQ=DAILY 
    END:VEVENT 
    BEGIN:VEVENT 
    UID:foo-bar 
    RECURRENCE-ID:20141126T090000Z 
    DTSTART:20141126T100000Z 
    END:VEVENT 
END:VCALENDAR 

Во втором VEVENT мы отсылаем к старому времени с помощью RECURRENCE-ID и затем переопределить время с новым DTSTART.

+0

Разве UID не должен быть уникальным для каждого события? – Troy

+0

Думаю, я понимаю ... так хорошо использовать UID для нескольких экземпляров повторяющегося события, потому что он по-прежнему считается одним событием? Должен ли я также добавить старый идентификатор повторения для вывода на исходное событие, чтобы предотвратить вычисление экземпляра на эту дату? Благодаря!! – Troy

+0

Я не знаю, можно ли вызывать повторяющееся событие технически «1 событие», но да, они связаны. Нет, вам не нужно перечислять его в 'EXDATE'. – Evert