gpt4 book ai didi

office365 - 如何在 O365 Calendar REST API v2.0 中的 OData 参数中处理开始和结束时区?

转载 作者:行者123 更新时间:2023-12-01 04:51:00 33 4
gpt4 key购买 nike

我正在努力实现的目标

我想获取用户日历中的所有事件,有时在两个时刻之间的特定窗口内,有时只是全部。这些事件必须在事件开始时作为一个瞬间进行排序。

我面临的问题

我在使用 OData v4 时遇到了一些问题 $filter$orderby用于按事件的开始和结束进行过滤和排序的查询参数。问题是,从 API 的 v2.0 开始,这些属性是由 DateTime 组成的对象。和一个 TimeZoneTimeZoneDateTime 过滤/排序时应考虑在内.

此片段取自官方文档:

{
"@odata.id": "https://outlook.office.com/api/beta/Users('ddfcd489-628b-40d7-b48b-57002df800e5@1717622f-1d94-4d0c-9d74-709fad664b77')/Events('AAMkAGI28tEyDAAA=')",
"@odata.etag": "W/\"nfZyf7VcrEKLNoU37KWlkQAA/LpDWw==\"",
"Id": "AAMkAGI28tEyDAAA=",
"Subject": "Scrum",
"Start": {
"DateTime": "2015-11-02T17:00:00",
"TimeZone": "Pacific Standard Time"
},
"End": {
"DateTime": "2015-11-02T17:30:00",
"TimeZone": "Pacific Standard Time"
},
...
}

我可以过滤 Start/DateTimeEnd/DateTime ,但是 不考虑时区偏移 .通过 Start/DateTime 订购也是如此:
https://outlook.office365.com/api/v2.0/users/user@example.org/events/?$filter=End/DateTime%20gt%202016-12-11T00:00:00&$orderby=Start/DateTime

尝试仅通过 Start 订购导致错误,这告诉我我无法订购非原始属性。

我在响应中收到的时区似乎都是 UTC,无论我在创建事件时指定哪个时区。但是,文档显示“太平洋标准时间”,所以我可能无法假设所有事件总是转换为 UTC。

为什么这个问题在 v1.0 API 中不存在

在 API v1.0 中, StartEnd仍然是(原始) datetimeoffset , 和 StartTimeZoneEndTimeZone是单独的属性,所以到那时问题不存在。 StartEnd包含一个偏移量,所以我可以过滤这些属性并按它们排序,同时忽略 StartTimeZoneEndTimeZone属性。

使用/calendarview 而不是/events

我知道 /calendarview 的存在端点,它允许我指定一个窗口来检索事件。但是,使用此端点也意味着我会收到所有事件(我不感兴趣的事件),而不是单个事件和系列母版。这就是我更喜欢使用常规 /events 的原因之一。端点。

最佳答案

您可以传递首选时区标题以获得所需时区的响应
Prefer: outlook.timezone="Eastern Standard Time"

关于office365 - 如何在 O365 Calendar REST API v2.0 中的 OData 参数中处理开始和结束时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41100907/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com