I have got some info about what is happening here. It seems like sloppy programming by the Google programmers. In Outlook calendar there are several fields as follows
PidLidAppointmetStartDate, PidLidAppointmentStartTime,PidLidAppointmentEndDate,PidLidAppointmentEndTime,PidLidAppointMentStartWhole and PidLidAppointmentEndWhole. In the urn:schemas:calendar namespace there are only two of these fields surfaced urn:schemas:calendar:dtstart and urn:schemas:calendar:dtend. When using WebDAV to create an appointment you populate the dtstart and dtend field with the appointment start time and appointment end time respectively. These fields map onto the PidLidAppointmentStartDate and PidLidApointmentEndDate and Outlook fills in the other fields using the data supplied in these fields. In the Appointments that originate from Google Calendar the PidLidAppointMentStartDate and PidLidAppointmentEnddate fields are set to 1980:01:01T00:00:00 and 1980:01:01T00:30:00 and the actual appointment start and end times are written directly to the PidLidAppointmentStartWhole and PidLidAppointmentEndWhole fields which allows Outlook to display them correctly but other apps which use the urn:schemas:calendar namespace fields cannot see this data so are unable to process the appointment properly. This just looks like sloppy programming. Why can't the Google developers just do what everyone else does and write the dates to the dtstart and dtend fields?