当我使用 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'
}