All-day 事件未在 Office 365 中正确创建
All-day events are not created correctly in Office 365
我正在尝试通过 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
}
看起来不错,如果我再次 GET 事件,有效负载会按设置返回。但是,当我转到 outlook.office365.com 时,事件现在跨越 2 天,而不是预期的 1 天。然而,持续时间显示为 1 天。取消单击 Outlook 中的 "all day" 会发现问题。由于我使用中欧时间,因此比 UTC 早一小时。开始显示为 2015-01-30 01:00,结束显示为 2015-02-01 00:59。所以在幕后,它似乎并没有作为我所在时区的全天事件存储。
当你使用f.ex。 EWS,您通常设置会议的时区,但是这似乎是不可能的。
我试图用时区信息提供开始和结束,但我得到一个 400 告诉我它必须以 UTC 提供。因此,据我所知,我无能为力,希望微软能解决这个问题。还是我遗漏了什么?
编辑:事件实际上在 Mac 的 Outlook 中正确显示,所以这可能只是 outlook 的 OWA 中的一个问题。office365.com。
API 现在支持时区。您在这里要做的不是将 Start
和 End
指定为 UTC(由末尾的 'Z' 前缀表示),而是在您的时区中指定它。然后,您可以将 StartTimeZone
和 EndTimeZone
值设置为 "Central European Time"。所以像这样:
{
"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"
}
我正在尝试通过 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
}
看起来不错,如果我再次 GET 事件,有效负载会按设置返回。但是,当我转到 outlook.office365.com 时,事件现在跨越 2 天,而不是预期的 1 天。然而,持续时间显示为 1 天。取消单击 Outlook 中的 "all day" 会发现问题。由于我使用中欧时间,因此比 UTC 早一小时。开始显示为 2015-01-30 01:00,结束显示为 2015-02-01 00:59。所以在幕后,它似乎并没有作为我所在时区的全天事件存储。
当你使用f.ex。 EWS,您通常设置会议的时区,但是这似乎是不可能的。
我试图用时区信息提供开始和结束,但我得到一个 400 告诉我它必须以 UTC 提供。因此,据我所知,我无能为力,希望微软能解决这个问题。还是我遗漏了什么?
编辑:事件实际上在 Mac 的 Outlook 中正确显示,所以这可能只是 outlook 的 OWA 中的一个问题。office365.com。
API 现在支持时区。您在这里要做的不是将 Start
和 End
指定为 UTC(由末尾的 'Z' 前缀表示),而是在您的时区中指定它。然后,您可以将 StartTimeZone
和 EndTimeZone
值设置为 "Central European Time"。所以像这样:
{
"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"
}