我在使用Outlook API专门使用Calendar API时遇到了问题。
我以UTC格式发送日期,当它们添加到日历中时,我与发送日期有所不同。
我在法国,所以原始日期是UTC + 2。我转换为UTC并使用此配置发出请求:
var options = {
url: "https://outlook.office.com/api/v2.0/me/calendars/" + workspace.calendarId + "/events?$Select=Id",
method: "POST",
headers: {
"authorization": "Bearer " + host.outlookCalAccessToken,
"accept" : "application/json",
"ContentType" : "application/json"
},
json:{
"Subject" : event.summary,
"Body" : {
"ContentType" : "Text",
"Content" : event.description
},
"Start" : {
"DateTime":start,
"TimeZone" : "OriginStartTimeZone"
},
"End" : {
"DateTime":end,
"TimeZone" : "OriginStartTimeZone"
},
"Attendees" : [
{
"EmailAddress" : {
"Name" : nomad.firstname,
"Address" : nomad.email
},
"Type" : "Required"
}
]
},
"Content-Type" : "application/json"
};
如果TimeZone是" OriginStartTimeZone"我有同样的问题。或" UTC"。
例如,我的本地日期为2017-10-19T17:00:00.000
它被转换为UTC 2017-10-19T15:00:00.000Z
在日历中,活动日期为2017-10-19T08:00:00.000
我对这个API错过了什么?
谢谢!
答案 0 :(得分:3)
OriginStartTimeZone
不是TimeZone
的有效值。如果您将TimeZone
设置为UTC
,则应获得预期结果。我刚用这个有效载荷测试了它:
{
"Subject" : "test",
"Body" : {
"ContentType" : "Text",
"Content" : "hello"
},
"Start" : {
"DateTime": "2017-10-19T15:00:00.000Z",
"TimeZone" : "UTC"
},
"End" : {
"DateTime": "2017-10-19T16:00:00.000Z",
"TimeZone" : "UTC"
}
}
在我的POST响应和随后的事件GET请求中,我都回来了:
"Start": {
"DateTime": "2017-10-19T15:00:00.0000000",
"TimeZone": "UTC"
},
"End": {
"DateTime": "2017-10-19T16:00:00.0000000",
"TimeZone": "UTC"
},
答案 1 :(得分:2)
如果您希望活动开始日期为当地时间10:30的2017-10-19,您的起始对象应如下所示:
Start:{DateTime: "2017-10-19T10:30:00+02:00", TimeZone: "UTC"}
这是你的起始对象的样子吗?如果是,则应在日历中正确显示事件时间。
答案 2 :(得分:0)
将时区更改为UTC后,问题仍然存在。我发现它不起作用。在网络邮件中,时区设置为UTC-8,虽然我在注册时填写了正确的时区... 谢谢你的回答!