Outlook REST API未来重复性事件正在创建,但启动时间错误

问题描述:

我正在使用REST API端点https://outlook.office.com/api/v1.0/me/events/在Outlook live中创建会议。会议的有效载荷看起来喜欢 -Outlook REST API未来重复性事件正在创建,但启动时间错误

{ 
    "Subject":"Test Meeting", 
    "Location":{ 
    "DisplayName":"" 
    }, 
    "Start":"2017-03-02T18:00:00Z", 
    "End":"2017-03-02T19:00:00Z", 
    "Body":{ 
    "ContentType":"HTML", 
    "Content":"<html><body>Test Meeting Content<\/body><\/html>" 
    }, 
    "Recurrence":{ 
    "Pattern":{ 
     "Type":"Weekly", 
     "Interval":1, 
     "Month":0, 
     "Index":"First", 
     "FirstDayOfWeek":"Sunday", 
     "DayOfMonth":0, 
     "DaysOfWeek":["Thursday"] 
    }, 
    "Range":{ 
     "Type":"EndDate", 
     "StartDate":"2017-03-02", 
     "EndDate":"2017-03-31" 
    }}, 
    "Attendees":[ 
     { 
     "EmailAddress":{ 
      "Address":"[email protected]" 
     }, 
     "Type":"Required" 
    } 
    ] 
} 

对于一个月每周这种重复发生的事件,前两次发生在正确的时间创建的,但三个会议事件其余都越来越有一个小时的延迟(而不是10创建:UTC UTC,现在是上午11:00)。

我甚至用v2.0端点尝试过没有运气。我也尝试通过时区来开会日期和结束日期,但它表现出相同的行为。

有没有人碰到过这个或类似的问题?任何指针都会有很大的帮助,谢谢!

参考API - https://msdn.microsoft.com/office/office365/APi/calendar-rest-operations#CreateEvents

的API在技术上表现正确这里。 UTC不会更改,但您在客户端上配置的时区可能会发生变化。在美国夏令时开始于3月12日,所以你看到约会在当地视图中“转移”,以便约会始终在UTC 18:00开始,正如你指定的:)

所以我的猜测是你希望启动时间在DST更改期间保持不变,因此您真正想要在此处执行的操作是在请求中指定用户的时区。我建议使用V2 API,其中StartEnd改变类型的DateTimeTimeZone,可以按名称来指定TZ:

"Start": { 
    "DateTime": "2017-03-02T10:00:00", 
    "TimeZone": "Pacific Standard Time" 
}, 
"End": { 
    "DateTime": "2017-03-02T11:00:00", 
    "TimeZone": "Pacific Standard Time" 
}, 

但是,如果你需要保持与1.0版API,那么你仍然可以使用StartTimeZoneEndTimeZone属性在请求中指定TZ。您在此处执行的额外工作是计算StartEnd值中的偏移量。因此,例如,对于太平洋标准时间,偏移量是-08:00从UTC,所以相关位会是什么样子:

"Start": "2017-03-02T10:00:00-08:00", 
"StartTimeZone": "Pacific Standard Time", 
"End": "2017-03-02T11:00:00-08:00", 
"EndTimeZone": "Pacific Standard Time", 
+0

哦,我明白了,我完全错过了。谢谢@Jason。 –