客户端中的 Office 365 API 日历事件时区显示获取 UTC



当我使用 Office 365 API 创建日历事件时,我将时区指定为"W. 欧洲标准时间"并相应地设置日期时间的格式,例如;'2019-10-05T23:00:00+02:00'。

当客户端尝试编辑此日历条目时,它显示为 UTC。 它在客户端中的显示方式的图像。

来自 Mac 上的 Outlook 客户端的第二个示例;在这里,它以 UTC 显示,但向用户发出警告,指出事件实际上在计算机本地时区的 23:00 开始。Mac 上第二个示例的图像。

下面是一个示例有效负载:

{'Attendees': [{'EmailAddress': {'Address': u'foo@bar.com',
'Name': u'John Doe'},
'Type': 'Required'}],
'Body': {'Content': u'The content',
'ContentType': 'HTML'},
'Start': {'DateTime': '2019-10-05T23:00:00+02:00',
'TimeZone': 'W. Europe Standard Time'},
'End': {'DateTime': '2019-10-06T00:00:00+02:00',
'TimeZone': 'W. Europe Standard Time'},
'Location': {'Address': None,
'DisplayName': 'Some display name'},
'Subject': u'Some subject'}

我使用的 API 网址是:https://outlook.office.com/api/v2.0/me/events

现在,客户帐户设置为与我们在挪威使用的时区相同的时区。当他们手动创建自己的日历条目时,他们永远不会看到这个问题。它仅适用于通过 API 创建的那些。

为了进一步混淆事情,在查看日历时这不是问题。它在每月视图中正确显示,并在 outlook.office365.com 站点的"详细信息"视图中正确显示。在在线套件中单击"编辑"以及在桌面Outlook客户端中查看它时,这主要是问题。它在联机 Outlook 站点中正确查看的示例。

任何帮助将不胜感激。谢谢!

问题是您在 DateTime 字符串中指定了时间偏移量 ('2019-10-05T23:00:00+02:00'(。在这种情况下,时区参数将被忽略并默认为 UTC。

如果您尝试此操作,它应该按预期工作:

{
'Attendees': [{
'EmailAddress': {
'Address': u 'foo@bar.com',
'Name': u 'John Doe'
},
'Type': 'Required'
}
],
'Body': {
'Content': u 'The content',
'ContentType': 'HTML'
},
'Start': {
'DateTime': '2019-10-05T23:00:00',
'TimeZone': 'W. Europe Standard Time'
},
'End': {
'DateTime': '2019-10-06T00:00:00',
'TimeZone': 'W. Europe Standard Time'
},
'Location': {
'Address': None,
'DisplayName': 'Some display name'
},
'Subject': u 'Some subject'
}

最新更新