Ical events without time are not imported

Bug #80161 reported by Guy Van Sanden
12
Affects Status Importance Assigned to Milestone
SchoolTool
Confirmed
Medium
Justas Sadzevičius

Bug Description

When I tried to import my Evolution calendar.ics file, it failed to upload with
the error: Error parsing iCalendar data: Event start time should precede end time.

I traced the cause back to a number of events in my file that have no time
associated with them (Like holidays etc).

A failing event looks like this:
BEGIN:VEVENT
UID:20041115T212328Z-27508-1002-25892-6@cronos
DTSTAMP:20041115T212303Z
LAST-MODIFIED:20050727T125728
SUMMARY:Moederdag
DTSTART;VALUE=DATE:20030815
DTEND;VALUE=DATE:20030815
RRULE:FREQ=YEARLY;INTERVAL=1;WKST=SU
CLASS:PUBLIC
SEQUENCE:1
CREATED:20050727T125728
END:VEVENT

I have this event in attached ICS file

Tags: ical timezones
Revision history for this message
Guy Van Sanden (nocturn) wrote :
Revision history for this message
Guy Van Sanden (nocturn) wrote :

I created an all-day event through the webinterface of schoolbell, and it looks
different from Evolution.

It only has a DTSTART entry, but also a duration:
DTSTART;VALUE=DATE:20060325
DURATION:P1D

Evolution however pops up an error on this, saying the event has no end time.

Revision history for this message
Guy Van Sanden (nocturn) wrote :

Hmm, Evolution 2.6 seems to have changed that behavior.
It sets all-day events with DTEND one day after DTSTART, this doesn't work well
with Evo<2.6.

Revision history for this message
Marius Gedminas (mgedmin) wrote :

The iCalendar spec (RFC 2445) is difficult to understand. It says

   Property Name: DTEND

   Description: [...] The value MUST be
   later in time than the value of the "DTSTART" property.

It also says

   The "VEVENT" is also the calendar component used to specify an
   anniversary or daily reminder within a calendar. These events have a
   DATE value type for the "DTSTART" property instead of the default
   data type of DATE-TIME. If such a "VEVENT" has a "DTEND" property, it
   MUST be specified as a DATE value also. The anniversary type of
   "VEVENT" can span more than one date (i.e, "DTEND" property value is
   set to a calendar date after the "DTSTART" property value).

   The "DTSTART" property for a "VEVENT" specifies the inclusive start
   of the event. For recurring events, it also specifies the very first
   instance in the recurrence set. The "DTEND" property for a "VEVENT"
   calendar component specifies the non-inclusive end of the event. For
   cases where a "VEVENT" calendar component specifies a "DTSTART"
   property with a DATE data type but no "DTEND" property, the events
   non-inclusive end is the end of the calendar date specified by the
   "DTSTART" property. For cases where a "VEVENT" calendar component
   specifies a "DTSTART" property with a DATE-TIME data type but no
   "DTEND" property, the event ends on the same calendar date and time
   of day specified by the "DTSTART" property.

Here's another interesting excerpt:

   2. A calendar entry with a "DTSTART" property but no "DTEND"
       property does not take up any time. It is intended to represent
       an event that is associated with a given calendar date and time
       of day, such as an anniversary. Since the event does not take up
       any time, it MUST NOT be used to record busy time no matter what
       the value for the "TRANSP" property.

Here's my interpretation:

  * An event that has DTSTART but no DTEND/DURATION properties is an all-day
event (that shouldn't influence free/busy time)

  * If an event has both DTSTART and DTEND (both with DATE values), then DTEND
must be greater than DTSTART

I do not understand if DTEND is inclusive or exclusive. For example, if I have
an event like

  DTSTART;VALUE=DATE:20060325
  DTEND;VALUE=DATE:20060327

should the event be displayed on Mar 25, Mar 26, Mar 27 or should it only be
displayed on Mar 25 and Mar 26?

Changed in schooltool:
assignee: nobody → ignas
Changed in schooltool:
status: In Progress → Confirmed
Changed in schooltool:
assignee: Ignas Mikalajūnas (ignas) → Justas Sadzevičius (justas-pov)
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.