rfc2445, как хранить события всего дня?

Я создаю приложение календаря, которое должно соответствовать спецификации rfc-2445. У меня было несколько проблем с событиями All Day здесь, но теперь они были решены, вы можете увидеть вопрос SO здесь, но это заставило меня задать следующий вопрос.

Дело в том, что когда я выбираю событие All Day например с 20-10-2015 по 21-10-2015 (длительность события 2 дня) на самом деле мне нужно создать запись в БД из 20 -10-2015 до 22-10-2015, в противном случае событие будет отображаться как однодневное.

И мой вопрос состоит из двух частей:

  1. Верно ли вышесказанное и соответствует ли оно стандарту rfc-2445?
  2. Должен ли я хранить такое событие в БД с 20-10-2015 по 22-10-2015, а когда показывать его детали конечному пользователю, я должен уменьшить один день от даты окончания или сохраните его как 20-10-2015 до 21-10-2015 и увеличьте его на один день в конечную дату при отображении в календаре.

Спасибо.


person Anatoly    schedule 20.04.2015    source источник


Ответы (1)


Свойство DTEND соответствует неинклюзивному концу события, поэтому приведенный выше пример верен.

См. http://tools.ietf.org/html/rfc5545#section-3.6.1, в котором указано:

Свойство "DTSTART" для "VEVENT" указывает инклюзивное начало события. Для повторяющихся событий он также указывает самый первый экземпляр в наборе повторения. Свойство "DTEND" для компонента календаря "VEVENT" указывает неинклюзивное окончание события.

а также есть пример многодневного события на весь день:

Ниже приведен пример компонента календаря "VEVENT", используемого для представления многодневного события, запланированного с 28 июня 2007 г. по 8 июля 2007 г. включительно. Обратите внимание, что свойство «DTEND» установлено на 9 июля 2007 г., поскольку свойство «DTEND» указывает неинклюзивное окончание события.

   BEGIN:VEVENT
   UID:[email protected]
   DTSTAMP:20070423T123432Z
   DTSTART;VALUE=DATE:20070628
   DTEND;VALUE=DATE:20070709
   SUMMARY:Festival International de Jazz de Montreal
   TRANSP:TRANSPARENT
   END:VEVENT

Вы бы заметили, что я имею в виду RFC5545, который устарел RFC2445.

person Arnaud Quillaud    schedule 20.04.2015
comment
Спасибо. Наконец я получил идею. - person Anatoly; 20.04.2015
comment
Привет, я вернулся в этот проект, забыл, что я уже задавал его и получил ответ от вас, спросил еще раз и нашел свой вопрос. Я еще раз понял, кроме одного момента, если у нас есть часть времени в DTSTART и DTEND, а DTEND является эксклюзивным, значит ли это, что последняя секунда события формально не является частью события? Например DTSTART:20151223T060000Z DTEND:20151223T070000Z Еще раз спасибо. - person Anatoly; 22.12.2015