Office365 通过Graph API更新递归会议的结束日期无效

Office365 通过Graph API更新递归会议的结束日期无效,office365,microsoft-graph-api,azure-ad-graph-api,Office365,Microsoft Graph Api,Azure Ad Graph Api,我目前正在使用Office Graph API处理用户会议日历。 如果使用“/subscriptions”请求创建、更新和删除事件,我必须订阅以接收通知! 我的用户正在使用里斯本时区(夏季=UTC+1,冬季=UTC) 当用户在office 365中创建事件时,在我的应用程序一侧,如果事件是没有结束日期的递归会议,我会(通过Graph API)更新会议,使其具有结束日期。[注:我的申请规则之一是会议时间不得超过365天。] 问题:该系列被压缩到我通过API更新的结束日期,但时间留给了错误的时区。我

我目前正在使用Office Graph API处理用户会议日历。 如果使用“/subscriptions”请求创建、更新和删除事件,我必须订阅以接收通知! 我的用户正在使用里斯本时区(夏季=UTC+1,冬季=UTC)

当用户在office 365中创建事件时,在我的应用程序一侧,如果事件是没有结束日期的递归会议,我会(通过Graph API)更新会议,使其具有结束日期。[注:我的申请规则之一是会议时间不得超过365天。]

问题:该系列被压缩到我通过API更新的结束日期,但时间留给了错误的时区。我已经尝试请求不带时区的API,并且已经请求使用时区UTC和时区UTC+1进行更新,我总是遇到相同的问题。在办公室方面,在我更新之后,会议时间减少了一个小时

下图是系列的一个示例,该系列没有结束范围:

我在更新之前获取了一些子会议,这是正确的。在葡萄牙,时间变更日为2019-03-30,因此第30天开始于协调世界时10时00分,第31天开始于协调世界时09时00分:

在此,我向office 365发送更新重复周期结束(结束日期)的请求:

发送更新请求后,我获取相同的子项,2019-03-30和2019-03-31天都从10点开始。 在客户端日历中进行此更新后,会议的开始和结束时间错误:

我已经尝试过在Graph API recurrenctTImeZone:UTC、GMT标准时间字段中输入任何内容,但我始终得到相同的回报。我解决不了这个问题


你知道什么地方出了问题吗?

你可以在请求的标题中使用它

Prefer: outlook.timezone="Central Standard Time"

通过这种方式,它知道您希望在哪个时区进行计算。有关这方面的更多文档可在此处找到

我不会在太平洋标准时区或格林尼治标准时区的用户中重现这种行为。为清楚起见,我正在使用Postman进行所有测试,我没有使用Jeremy在上面指出的
首选:outlook.timezone
标题

我在太平洋时间下午2点(UTC时间22:00)为用户创建了一个每日无终止约会。还要注意的是,DST从3月10日开始在这个时区进行。正如您在下面看到的,在更新之前和之后,实例上的时间都是正确的

我还为GMT标准时区的用户重复了相同的事件序列(在Outlook on the web中按此配置):

对于这个用户,我得到了完全相同的结果

我建议您在修补复发时始终使用原始复发的
recurrenceTimeZone
。您可能已通过最初使用
UTC
进行修补损坏了重复

在Outlook网上创建后获取事件

GET /me/events/{id}&$select=originalStartTimeZone,originalEndTimeZone,start,end,recurrence
{
“id”:“AAMkAGE1NWM…”,
“原始起始时区”:“太平洋标准时间”,
“原始时区”:“太平洋标准时间”,
“开始”:{
“日期时间”:“2019-01-24T22:00:00.0000000”,
“时区”:“UTC”
},
“结束”:{
“日期时间”:“2019-01-24T22:30:00.0000000”,
“时区”:“UTC”
},
“复发”:{
“模式”:{
“类型”:“每日”,
“间隔”:1,
“月”:0,
“dayOfMonth”:0,
“星期一”:“星期日”,
“索引”:“第一”
},
“范围”:{
“类型”:“noEnd”,
“起始日期”:“2019-01-24”,
“结束日期”:“0001-01-01”,
“重现时区”:“太平洋标准时间”,
“NumberOfOfOccurrencess”:0
}
}
}
在修改前获取实例

注意开始/结束时间的变化

GET /me/events/{id}/instances?startDateTime=2019-03-09T00:00:00&endDateTime=2019-03-11T00:00:00&
$select=originalStartTimeZone,originalEndTimeZone,start,end
{
“价值”:[
{
“id”:“AAMkAGE1NWM…”,
“原始起始时区”:“太平洋标准时间”,
“原始时区”:“太平洋标准时间”,
“开始”:{
“日期时间”:“2019-03-09T22:00:00.0000000”,
“时区”:“UTC”
},
“结束”:{
“日期时间”:“2019-03-09T22:30:00.0000000”,
“时区”:“UTC”
}
},
{
“@odata.etag”:“W/\”brerxuis3kgixcvjg69aaanf7nzq==\”,
“id”:“AAMkAGE1NWM…”,
“原始起始时区”:“太平洋标准时间”,
“原始时区”:“太平洋标准时间”,
“开始”:{
“日期时间”:“2019-03-10T21:00:00.0000000”,
“时区”:“UTC”
},
“结束”:{
“日期时间”:“2019-03-10T21:30:00.0000000”,
“时区”:“UTC”
}
}
]
}
更新事件周期以添加结束日期

请注意,我将
recurrenceTimeZone
保留为与原始值相同的值

PATCH/me/events/{id}
{
“复发”:{
“模式”:{
“类型”:“每日”,
“间隔”:1,
“月”:0,
“dayOfMonth”:0,
“星期一”:“星期日”,
“索引”:“第一”
},
“范围”:{
“类型”:“结束日期”,
“起始日期”:“2019-01-24”,
“截止日期”:“2020-01-23”,
“重现时区”:“太平洋标准时间”,
“NumberOfOfOccurrencess”:0
}
}
}
修改后获取实例

请注意,开始/结束时间仍然正确移动

GET /me/events/{id}/instances?startDateTime=2019-03-09T00:00:00&endDateTime=2019-03-11T00:00:00&
$select=originalStartTimeZone,originalEndTimeZone,start,end
{
“价值”:[
{
“id”:“AAMkAGE1NWM…”,
“原始起始时区”:“太平洋标准时间”,
“原始时区”:“太平洋标准时间”,
“开始”:{
“日期时间”:“2019-03-09T22:00:00.0000000”,
“时区”:“UTC”
},
“结束”:{
“日期时间”:“2019-03-09T22:30:00.0000000”,
“时区”:“UTC”
}
},
{
“@odata.etag”:“W/\”brerxuis3kgixcvjg69aaanf7nzq==\”,
“id”:“AAMkAGE1NWM…”,
“原始起始时区”:“太平洋标准时间”,
“原始时区”:“太平洋标准时间”,
“开始”:{
“日期时间”:“2019-03-10T21:00:00.0000000”,
“ti