开发者社区 问答 正文

通过图形API创建时区时区显示Outlook中的UTC

通过MS Graph API创建日历事件时,该事件在OWA和Outlook Client中看起来有所不同。

在Outlook客户端中,事件在概述中显示为确定,但是在查看详细信息时,该事件以UTC而不是我的时区(西欧)显示,并且我无法单击/取消单击时区按钮。如果我在OWA中打开相同的事件,则会在正确的时区显示。另外,如果我将活动发送给另一个组织,也可以正常显示。

这使我相信这是我们Outlook客户端中的功能,但是随后我看不到直接从Outlook创建的事件(看起来不错)与通过rest调用创建的事件之间的图形API差异。

这是我的有效载荷

{ "subject": "tEST", "organizer": { "emailaddress": { "address": " " } }, "start": { "dateTime": "2019-10-09T08:01:00.0000000", "timeZone": "UTC" }, "end": { "dateTime": "2019-10-09T09:01:00.0000000", "timeZone": "UTC" }, "attendees": [ { "emailAddress": { "name": "Mattias Johansson", "address": " " }, "type": "optional" } ], "reminderminutesbeforestart": 15 }

这是预订的屏幕截图,时间是略有不同的,因为这是与有效负载不同的另一个预订。

展开
收起
被纵养的懒猫 2019-10-09 16:41:32 658 分享 版权
阿里云 AI 助理回答

根据您的描述,问题在于通过Microsoft Graph API创建的日历事件在Outlook客户端中显示时区不正确,而OWA(Outlook Web Access)和发送给其他组织时显示正常。这通常是因为时间区域设置在API调用中没有被正确应用到Outlook客户端的显示逻辑上。

您提供的payload示例中,确实指定了startend的时间都是UTC时区。为了确保事件在Outlook客户端中以用户的本地时区(西欧时区)正确显示,您需要确保客户端能够识别并转换这些UTC时间到用户的本地时间。但是,直接指定为UTC并且在客户端遇到问题可能意味着客户端处理或解释这些信息的方式有误。

解决方案尝试:

  1. 明确指定参会者的时区:虽然您已经指定了事件的开始和结束时间的时区为UTC,但并未为attendees指定时区。尽管这不一定能解决客户端显示问题,但在某些情况下,更全面的信息可能会帮助系统更好地解析时间。

  2. 检查Outlook客户端设置:确认Outlook客户端的时区设置是否正确配置为“西欧”时区。有时,即使事件数据正确,错误的客户端设置也会导致显示问题。

  3. 使用clientTimeZoneId: 尝试在请求中包含用户的客户端时区ID。虽然Microsoft Graph API本身不直接支持在事件创建中使用客户端时区ID作为参数,但您可以考虑在创建事件后,通过额外的逻辑来更新事件,使其包含一个自定义属性来存储用户时区信息,然后在客户端侧利用这个信息进行适当的时区转换。

  4. 调整时间戳格式:虽然不太可能是问题所在,但确保时间戳格式完全符合Microsoft Graph API的要求,有时候微小的格式差异也可能影响解析。

  5. 查看API版本:确认您使用的Microsoft Graph API版本是最新的,并查阅相关文档是否有针对时区处理的更新或建议。

  6. 社区与官方支持:如果上述方法都不能解决问题,建议在Microsoft开发者社区、Stack Overflow或者直接联系Microsoft的技术支持寻求帮助,因为这可能是一个特定于环境或版本的问题。

请记得,尽管我基于阿里云的知识库提供帮助,对于特定于Microsoft Graph API的技术细节,遵循微软官方的指导和资源将是最佳实践。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答
问答分类:
问答标签:
问答地址: