1

我正在尝试使用 Microsoft Graph API 创建一个事件。有点令人困惑的是日期类型参数,例如start它是dateTimeTimeZone类型,它有两个属性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"
  },
}

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

4

1 回答 1

0

您可以在 Graph API 的 beta 版本中获取支持的时区列表:

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 Web 客户端中,您将时区设置为特定的时区,并且所有事件都相对于日历上的该时区显示。我创建此约会的测试用户将他们的时区设置为太平洋标准时间,所以当我查看我的日历时,我创建的事件显示为从 1 月 8 日晚上 10:30 开始到上午 12:30 结束1/9。

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

于 2018-01-09T13:51:39.350 回答