Office 365中未正确创建全天事件

时间:2015-03-11 09:00:31

标签: api rest office365

我正在尝试通过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。

1 个答案:

答案 0 :(得分:4)

API现在支持时区。您要在此处执行的操作不是将StartEnd指定为UTC(由末尾的“Z”前缀指示),而是在您的时区中指定它。然后,您可以将StartTimeZoneEndTimeZone值设置为“中欧时间”。所以像这样:

{
  "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"
}