Index: ical.inc =================================================================== --- ical.inc (revision 203) +++ ical.inc (working copy) @@ -38,11 +38,14 @@ foreach ($events as $uid => $event) { $output .= "BEGIN:VEVENT\n"; $output .= "DTSTAMP;VALUE=DATE-TIME:". gmdate("Ymd\THis\Z", time()) ."\n"; + if (!$event['has_time']) { // all day event - $output .= "DTSTART;VALUE=DATE-TIME:" . event_format_date($event['start_utc'], 'custom', "Ymd\THis\Z") ."\n"; - //If allday event, set to day after allday start - $end_date = event_date_later($event['start'], 1); - $output .= "DTEND;VALUE=DATE-TIME:" . event_format_date($end_date, 'custom', 'Ymd') ."\n"; + // outlook and google calendar flag an event as all day event if DATE (not DATE-TIME) is specified + $output .= "DTSTART;VALUE=DATE:" . event_format_date($event['start_utc'], 'custom', "Ymd") ."\n"; + if (!empty($event['end_utc'])) + { + $output .= "DTEND;VALUE=DATE:" . event_format_date($event['end_utc'], 'custom', "Ymd") ."\n"; + } } else if (!empty($event['start_utc']) && !empty($event['end_utc'])) { $output .= "DTSTART;VALUE=DATE-TIME:". event_format_date($event['start_utc'], 'custom', "Ymd\THis\Z") ."\n";