Значение UNTIL в RRULE при прерывании повторяющегося события

Рассмотрим следующее событие Repeat в Google Calendar с RRULE, как указано ниже.

BEGIN:VEVENT
DTSTART;TZID=Asia/Calcutta:20170111T020000
DTEND;TZID=Asia/Calcutta:20170111T050000
RRULE:FREQ=DAILY;UNTIL=20170116T203000Z
DTSTAMP:20170110T150957Z
CREATED:20170110T150942Z
DESCRIPTION:
LAST-MODIFIED:20170110T150942Z
LOCATION:
SEQUENCE:0
STATUS:CONFIRMED
SUMMARY:Repeat event test
TRANSP:OPAQUE
END:VEVENT

Если это событие теперь редактируется, разбивая серию повторений на две части (Изменить это и будущие события), скажем, 14 января, ПРАВИЛА этого события изменяется на следующее

RRULE:FREQ=DAILY;UNTIL=20170113T182959Z

Почему значение UNTIL установлено на 1 секунду меньше, чем значение RECURRENCEID / DTSTART для повторения 14 января, вместо того, чтобы устанавливать его на значение DTSTART для повторения 13 января. Существует ли стандарт, согласно которому значение UNTIL в RRULE в таких случаях должно быть установлено таким образом (т.е. на 1 секунду меньше)?


person Ezil Kannan    schedule 10.01.2017    source источник


Ответы (1)


Вы не найдете ни одного стандарта, упоминающего об этом. https://tools.ietf.org/html/rfc5545#section-3.3.10 упоминает, как

Если значение, указанное в UNTIL, синхронизируется с указанным повторением, эта ДАТА или ДАТА-ВРЕМЯ становится последним экземпляром повторения.

но он не требует, чтобы значение было синхронизировано с повторением, и не упоминает, что оно должно быть на 1 секунду меньше.

Я подозреваю, что это было просто удобством для разработчика, поскольку дата отсечения - 14-е число, которым он постоянно манипулирует, тогда как предыдущий экземпляр потребовался бы вычислить.

person Arnaud Quillaud    schedule 10.01.2017