Использование dll Interop.Redemption (версия 5.20.0.5298)
Мы синхронизируем встречи между нашим приложением .net и Outlook с помощью надстройки.
Когда я создаю событие All-Day в моем приложении .net, мы синхронизируем его как элемент встречи типа: «RDOAppointmentItem»
Это приложение RDO при просмотре в настольном приложении Outlook корректно и отображается как событие на весь день с 12:00 до 12:00 следующего дня.
При использовании мобильного приложения Outlook на Android (все, что я могу протестировать) этот RDO-приложение при синхронизации с мобильным приложением будет отображаться в диапазоне от предыдущего до послезавтра.
Я сузил проблему, заключающуюся в том, что мобильное приложение использует время UTC в качестве начала и конца, это было сделано путем смещения времени начала вперед на 10 часов (так как я GMT + 10)
Однако эта проблема становится очевидной только при использовании RDOAppointmentItem, если я изменяю свою логику для использования стандартного Outlook Interop "AppointmentItem" и сохраняю ее, когда она синхронизируется с Outlook Mobile App, событие на весь день происходит с 12:00 дня. до 12:00 следующего дня, т.е. все работает правильно.
StartUTC и EndUTC установлены правильно, и я попытался использовать OutlookSpy для проверки свойств MAPI, и все выглядит одинаково (Start / End / Timezone time) для 2 встреч на рабочем столе Outlook
Использование AppointmentItem
var apptItem = folder.Items.Add(OlItemType.olAppointmentItem) as AppointmentItem;
apptItem.AllDayEvent = dotnetAppt.AllDay;
apptItem.StartUTC = dotnetAppt.StartTime;
apptItem.EndUTC = dotnetAppt.EndTime;
apptItem.Subject = dotnetAppt.Subject;
apptItem.Save();
Использование RDOAppointmentItem
outlookCalendarFolder = rdoSession.GetFolderFromID(_syncSettings.CalendarEntryId))
rdoAppointment = outlookCalendarFolder.Items.Add(OlItemType.olAppointmentItem) as RDOAppointmentItem;
rdoAppointment.AllDayEvent = dotnetAppt.AllDay;
rdoAppointment.StartUTC = dotnetAppt.StartTime;
rdoAppointment.EndUTC = dotnetAppt.EndTime;
rdoAppointment.Subject = dotnetAppt.Subject;
rdoAppointment.Save();
Есть ли что-то особенное, что RDOAppointmentItem делает в своих свойствах Start, End, StartUTC, EndUTC, TimeZone или любых других возможных элементах, связанных с датой?
Не могу придумать другого объяснения.
Edit: вот реквизиты, которые присутствуют в olAppointmentItem и отсутствуют в RDOAppointmentItem
![olAppointmentItem](https://i.stack.imgur.com/sBZNb.png)
Вот реквизиты, которые есть в RDOAppointmentItem, которые отсутствуют в olAppointmentItem
![rdoAppointmentItem](https://i.stack.imgur.com/ecmHO.png)
Вот описания двух свойств, которые, по моему мнению, могут быть наиболее релевантными, находятся в olAppointmentItem, но не в RDOAppointmentItem
![start timezone](https://i.stack.imgur.com/Cyy6Y.png)
![end timezone](https://i.stack.imgur.com/XLIwz.png)
Надеюсь, это поможет