创建事件时 outlook api 中可接受的日期时间格式是什么?

What are the accepted datetime format in outlook api while creating events?

我正在尝试使用 Microsoft Graph 创建活动 API。有点令人困惑的是 date type 参数,例如 startdateTimeTimeZone 类型有两个属性,dateTimetimeZone.

 {
  "subject": "Test body event graph api ist 1",
 "start": {
      "dateTime": "2018-01-09T12:00:00",
      "timeZone": "India Standard Time"
  },
  "end": {
      "dateTime": "2018-01-09T14:00:00",
      "timeZone": "India Standard Time"
  },
}

例如,我使用了上面列出的开始和结束日期时间值。这意味着事件的开始日期应为 9th,January,2018,时间为 12:00:00 pm IST[​​=30=],而结束时间应为2:00:00 下午 IST[​​=30=]。但是,如果我查看我的日历,该活动计划于 IST 上午 6:30 开始,并在 8:30 上午 IST[​​=30=] 结束。我无法理解这种行为。有人可以解释一下吗? 那么dateTimetimeZone这两个参数具体说明了什么?可接受的有效日期时间格式是什么?dateTime 格式需要与 timeZone 匹配吗? 有人可以解释一下这些事情吗?

您可以 get a list of supported time zones 在测试版的图表中 API:

GET /me/outlook/supportedTimeZones

您使用的值 (India Standard Time) 是一个有效值,因此这应该有效。我刚刚试过了,它工作正常。

请求

POST /me/events

{
  "subject": "Test India Appt",
  "start": {
    "dateTime": "2018-01-09T12:00:00",
    "timeZone": "India Standard Time"
  },
  "end": {
    "dateTime": "2018-01-09T14:00:00",
    "timeZone": "India Standard Time"
  }
}

响应(截断)

{
  ...
  "originalStartTimeZone": "India Standard Time",
  "originalEndTimeZone": "India Standard Time",
  ...
  "subject": "Test India Appt",
  ...
  "start": {
    "dateTime": "2018-01-09T12:00:00.0000000",
    "timeZone": "India Standard Time"
  },
  "end": {
    "dateTime": "2018-01-09T14:00:00.0000000",
    "timeZone": "India Standard Time"
  },
  ...
}

当你说你查看日历时,你是怎么做到的?根据您使用的客户端,显示可能已调整为不同的时区。

例如,在 Outlook 网络客户端中,您将时区设置为特定时区,所有事件都会相对于日历上的该时区显示。我创建此约会的测试用户将他们的时区设置为太平洋标准时间,因此当我查看我的日历时,我创建的事件显示为从 1 月 8 日 10:30 PM 开始到 12:30 1/9 上午。

Outlook 桌面客户端也显示与用户时区相关的事件,但它使用 OS 的时区而不是依赖于它自己的设置。