During some work with MAPI I found very strange results for a few appointments, for example:
Tag: 0x00600040 Type: PT_SYSTIME Property Name(s): PR_START_DATE, PidTagStartDate DASL: http://schemas.microsoft.com/mapi/proptag/0x00600040 12:00:00 01.11.2012
Tag: 0x00610040 Type: PT_SYSTIME Property Name(s): PR_END_DATE, PidTagEndDate DASL: http://schemas.microsoft.com/mapi/proptag/0x00610040 02:30:00 01.11.2012
where EndDate is less than StartDate or EndDate is just different from that is shown in outlook calendar.
Appointment and Meeting Object Protocol Specification says that PidTagEndDate contains date and time of the appointment's end. But it seems that sometimes it contains length (2:30 in the example above). The most embarrasing thing about this is that Outlook shows dates correctly in calendars, so I need some way to interpret dates obtained from MAPI correctly.