Outlook.com API事件创建日期


outlook.com api event creation date

我正在使用PHPOutlook REST API,我能够创建事件很好,除了我给API创建事件的date增加了11个小时,end_date也有问题,例如,如果我告诉API创建从2014-03-31T15:00:00-00002014-03-31T16:00:00-0000的事件,它最终会创建从2014-04-01T02:00:00+11002014-04-01T02:30:00+1100的结束

这是我的API URL的样子

https://apis.live.net/v5.0/9898ef90931244e8/events?name=testing_event&description=event_description&start_time=2014-03-31T15:00:00-0000&end_time=2014-03-31T16:00:00-0000&access_token=token-goes-here&method=POST

如果我在末尾删除-0000,我得到以下错误

{
   "error": {
      "code": "request_parameter_invalid", 
      "message": "The value of input parameter 'start_time' isn't valid. The expected formats for this parameter are the following: '1970-01-01T00:00:00Z', '1970-01-01T00:00:00.000Z', '1970-01-01 00:00:00Z'. In all cases, 'Z' is interchangeable with a time zone offset of the form: '+00:00', '-00:00', '+0000' or '-0000'."
   }
}

我将非常感谢任何帮助,因为我花了几个小时试图解决这个问题,我几乎没有任何想法。

尝试使用Z作为本地时间:2014 - 03 - 31 t15:00:00.000z

就像

https://apis.live.net/v5.0/9898ef90931244e8/events?名称= testing_event&描述= event_description& start_time = 2014 - 03 - 31 - t15:00:00z& event_start_time = 2014 - 03 - 31 - t16:00:00z& access_token = token-goes-here&方法= POST

时间相同,但时区不同(-0000和+1100)

一段时间前,我在MSDN论坛上发布了这个问题,忘记了它,今天我访问了这个问题,这是我从Outlook团队得到的回答,解释了如何理解UTC时区,我希望这有助于有人在那里遇到同样的问题,我希望他们在他们的文档中包含这个。这解决了我遇到的问题

*日期的ISO 8601格式可能有点令人困惑。你在回答中看到的其实是正确的。日历服务获取您的日期并将其映射到用户的时区。

"2014-03-31T15:00:00-0000"表示2014年3月31日下午3点,带调整0小时0分钟转换为UTC时间。在其他总之,这基本上是UTC时间。然后是日历服务将其转换为您所在用户的本地时区创建事件。"2014-04-01T02:00:00+1100"指的是4月1日凌晨2点,2014,无论您的用户处于哪个时区。翻译回UTC时,您需要从本地时间中减去偏移量。所以凌晨两点,在你的时间地图上,2014年4月1日比UTC早11个小时,也就是下午3点2014年3月31日(您输入的日期)。

如果你使用Z,那意味着你实际上指定了aUTC时间。因此,为了得到你想要的时间,你需要采取行动并计算出相应的UTC时间。所以如果你的用户的UTC偏移量是+1100,你需要减去从您的事件的本地时间的偏移量来计算UTC时间。在你的情况下,我想应该是2014-03-31T04:00:00Z。这实际上是最好留给代码而不是试图去做的事情吗弄清楚如何做你自己。如果你看一下"创建在http://isdk.dev.live.com上的Calendar Events示例将向您展示如何操作*

*