我正在尝试通过REST API https://msdn.microsoft.com/office/office365/APi/calendar-rest-operations#EventoperationsCreateevents将一些事件导出到Office 365中的日历。
我将IsAllDay
设置为true,并将UTC的开始和结束设置为午夜。
有效载荷如下所示:
{
"Body": {
"Content": "Agenda",
"ContentType": "HTML"
},
"End": "2015-02-01T00:00:00Z",
"ShowAs": "Busy",
"Start": "2015-01-30T00:00:00Z",
"ChangeKey": "X2+akAeClEa0OJ8r6nC5QgABW30vaQ==",
"Location": {
"DisplayName": "Vesterbrogade"
},
"Subject": "Updated title",
"IsAllDay": true
}
看起来很好,如果我再次获取事件,则有效负载会按设置返回。然而,当我去outlook.office365.com时,事件现在跨越2天,而不是预期的1天。但持续时间显示为1天。在Outlook中取消选中“全天”会显示问题。由于我在中欧时间,我比UTC早一个小时。开始显示为2015-01-30 01:00,结束时为2015-02-01 00:59。因此,在我的时区内,它似乎不会被存储为全天活动。
当你使用f.ex. EWS,您通常会设置会议的时区,但这似乎不可能。
我试图给出开始和结束时区信息,但我得到400告诉我它必须以UTC格式提供。所以据我所知,我无能为力,希望微软能够解决这个问题。或者我错过了什么?
编辑:事件实际上在Outlook for Mac中正确显示,所以这可能只是Outlook中的OWA问题。在outlook.office365.com。
答案 0 :(得分:4)
API现在支持时区。您要在此处执行的操作不是将Start
和End
指定为UTC(由末尾的“Z”前缀指示),而是在您的时区中指定它。然后,您可以将StartTimeZone
和EndTimeZone
值设置为“中欧时间”。所以像这样:
{
"Body": {
"Content": "Agenda",
"ContentType": "HTML"
},
"Start": "2015-01-30T00:00:00+01:00",
"End": "2015-02-01T00:00:00+01:00",
"ShowAs": "Busy",
"Location": {
"DisplayName": "Vesterbrogade"
},
"Subject": "Updated title",
"IsAllDay": true,
"StartTimeZone": "Central European Standard Time",
"EndTimeZone": "Central European Standard Time"
}