3

我正在尝试使用 Outlook 365 API 创建一日全天事件。为此,我以 UTC 格式指定开始和结束时间,然后按照文档中的说明指示 StartTimeZone 和 EndTimeZone :

{
  Start: '2015-07-14T23:00:00.000Z',
  End: '2015-07-15T23:00:00.000Z',
  StartTimeZone: 'W. Central Africa Standard Time',
  EndTimeZone: 'W. Central Africa Standard Time',
  ShowAs: 'Free',
  IsAllDay: true,
  Body: {
    ContentType: 'HTML',
    Content: '<a href="http://localhost:3000/todos/MDckAk8b2nxvv4hoE">To-do due date</a>'
  },
  Subject : 'test 74'
}

现在,这是我的问题:

  • 使用字符串来定义时区是不方便且不一致的。伦敦在冬季使用 GMT,但在夏季使用 GMT+1。结果我必须使用'W. 中部非洲标准时间在夏季让我的请求被 API 接受,这令人困惑。仅使用这种格式定义时间,没有提及时区:2015-07-14T00:00:00+/-XX:00 描述午夜,即 7 月 14 日开始的时间为 GMT+/-XX 的区域:00 对我来说是明确的和理想的,但是 API 拒绝使用 IsAllDay: true 选项拒绝这种日期格式,说明全天事件应该在午夜开始和结束(如果没有给出 StartTimeZone 和 EndTimeZone)。

  • 某些时区根本不适用于doc中给出的 GMT 偏移量,即使时间和时区对应。这些区域根本不适用于其 GMT 偏移量:阿拉斯加标准时间、太平洋标准时间、大西洋中部标准时间。这是一个失败的查询示例('Mid-Atlantic Standard Time',GMT 偏移量 -2):

    { 开始:'2015-07-15T02:00:00.000Z',结束:'2015-07-16T02:00:00.000Z',StartTimeZone:'中大西洋标准时间',EndTimeZone:'中大西洋标准时间' , ShowAs: 'Free', IsAllDay: true, Body: { ContentType: 'HTML', Content: ' To-do due date ' }, Subject : 'test 75' } 它的 GMT 偏移量为 -1(开始: '2015-07-15T01:00:00.000')。如何在 GMT-2 中为我的用户做些什么?

  • 文档中的多个字符串可以描述相同的 GMT 偏移量。例如,“山地标准时间”和“美国山地标准时间”都描述了 GMT-07:00,但只有我对“美国山地标准时间”的查询有效。一些时间偏移最多可以有 5 个不同的字符串!(如 GMT+01:00)选择哪一个?

现在,我正在选择一个基于 GMT 偏移量的 TimeZone 字符串(如果存在的话!)。如果我将时钟设置为伦敦当前时间,我将使用'W。StartTimeZone 和 EndTimeZone 的中非标准时间。

有没有办法不使用这些字符串?或者有人可以解释我如何正确选择它们吗?我完全迷失在日期翻译中!:)

4

2 回答 2

2

正确处理全天事件确实需要知道用户的时区。不幸的是,如果您在随机时区创建它,而用户邮件客户端(Outlook、OWA 等)使用另一个时区,则该事件将跨越多天(因为开始和结束从午夜开始移动)。

因此,您在这里真正应该做的是在用户的时区中将开始和结束时间设置为午夜:

{
  "Start": "2015-07-17T00:00:00-04:00",
  "End": "2015-07-18T00:00:00-04:00",
  "StartTimeZone": "Eastern Standard Time",
  "EndTimeZone": "Eastern Standard Time",
  "IsAllDay": "true",
  "ShowAs": "Free",
  "Body": {
    "ContentType": "Text",
    "Content": "Test"
  },
  "Subject": "TZ AllDay Test"
}
于 2015-07-15T15:12:47.480 回答
0

该事件将在哪里使用?使用当地时区。

于 2015-07-14T19:55:54.470 回答