使用Interop.Redemption dll(版本5.20.0.5298) 我们使用插件在.net应用程序和Outlook之间同步约会。 当我在.net应用程序中创建“全天”事件时,我们将其同步为类型为“ RDOAppointmentItem”
的约会项在Outlook桌面应用程序上查看时,此RDO Appt是正确的,显示为一天中的凌晨12点到次日的凌晨12点。
在Android上使用Outlook移动应用程序(我可以进行测试)时,此RDO Appt在同步到移动应用程序后将显示为前一天到后一天。
我已将问题缩小为移动应用程序使用UTC时间作为开始和结束时间,这是通过将开始时间提前10小时(我是GMT + 10)来实现的
但是,仅当使用RDOAppointmentItem时此问题才变得明显,如果我更改逻辑以使用Outlook Interop标准“ AppointmentItem”并保存,则当它同步到Outlook Mobile App时,全天事件从凌晨12点开始到次日凌晨12点,即一切正常。
StartUTC和EndUTC设置正确,我尝试使用OutlookSpy检查MAPI属性,并且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在其“开始”,“结束”,“ StartUTC”,“ EndUTC”,“时区”或任何其他可能与日期相关的项目属性中是否有特殊之处?
我想不出任何其他解释。
编辑:这是olAppointmentItem上存在的道具,而RDOAppointmentItem缺少这些道具
这是olAppointmentItem上缺少的RDOAppointmentItem上的道具
以下是我认为最相关的两个属性的描述,它们在olAppointmentItem上,而不在RDOAppointmentItem上
希望有帮助