Outlook Calendar API自行增加小时数

时间:2014-04-29 13:22:28

标签: php rest outlook-calendar

我正在使用PHP和Outlook Calendar REST API,我能够很好地创建事件,除了我给API创建事件的日期增加了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网址

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'."
   }
}

我会非常感谢任何帮助,因为我花了几天时间来解决这个问题,而且我几乎完全没有想法......

1 个答案:

答案 0 :(得分:0)

前段时间我在MSDN论坛上发布了这个问题并忘了它,今天我访问了这个问题,这是我从Outlook团队解释如何理解UTC时区的reply,我希望这可以帮助某人我遇到了同样的问题,我希望他们把它包含在他们的文档中。这解决了我遇到的问题


  

*日期的ISO 8601格式可能有点令人困惑。您在回复中看到的内容实际上是正确的。日历服务   记录您的日期并将其映射到用户的时区。

     

" 2014-03-31T15:00:00-0000"指的是2014年3月31日下午3点   调整0小时0分钟转换为UTC时间。在   换句话说,这基本上是IS UTC时间。然后是日历服务   将其转换为您所在用户的本地时区   创建活动。 " 2014-04-01T02:00:00 + 1100"是指4月2日上午   2014年1月1日,适用于您的用户所在的任何时区。要翻译回来   UTC,您需要从当地时间减去偏移量。凌晨2点,   2014年4月1日,您的时间映射到UTC时间早11点,即下午3点   2014年3月31日(您输入的内容)。

     

如果您使用Z,则表示您实际上是在指定   UTC时间。因此,为了获得您需要的活动所需的时间   您想要的时间并找出相应的UTC时间。   因此,如果用户的UTC偏移量为+1100,则需要减去   偏离事件的当地时间来计算UTC   时间。在你的情况下,我相信这将是2014-03-31T04:00:00Z。这个   实际上是最好的代码,而不是尝试   弄清楚如何做自己。如果你看看"创建   日历活动"样本在http://isdk.dev.live.com它会告诉你如何   在JavaScript中执行此操作 - 可能有PHP等价物。*