2014-03-27 32 views
0

我正在与PHPOutlook REST API一起工作,除了date我给API创建事件增加了11个小时,并且end_date也有问题之外,我能够创建事件,例如,如果我说的是API来创建事件从2014-03-31T15:00:00-00002014-03-31T16:00:00-0000它结束了创建自2014-04-01T02:00:00+1100年底2014-04-01T02:30:00+1100outlook.com api事件创建日期

这是我的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'." 
    } 
} 

我真的感谢所有帮助我花了hourssss试图解决这一问题,我几乎超出了所有的想法..

回答

0

甲而之前我在MSDN论坛上发布了这个问题,并且忘记了它,今天我访问了这个问题,这是我从Outlook团队获得的解释如何理解UTC时区的reply,我希望这能帮助那些在那里遇到同样问题的人和我希望他们将这些纳入他们的文档中。这固定了我遇到的问题

*日期的ISO 8601格式可能有点混乱。您在回复中看到的内容其实是正确的。日历服务 获取您的日期并将其映射到用户的时区。

“2014-03-31T15:00:00-0000”表示2014年3月31日下午3点, 调整为0小时零分,转换为UTC时间。在其他 单词中,这基本上是UTC时间。然后,日历服务 将其转换为您为其创建活动的用户的本地时区。 “2014-04-01T02:00:00 + 1100”表示2014年4月1日上午2点, 2014,无论用户所处的时区为何。要将UTC翻译回 ,您需要减去当地时间的偏移量。因此,2014年4月1日上午2点,您的时间地图上的UTC时间为2014年3月31日3 PM (您输入的内容)。

如果您使用的是Z,那意味着您实质上指定了一个 UTC时间。因此,为了获得您的活动所需的时间,您需要采取 您想要的时间,并找出相应的UTC时间。 因此,如果您的用户的UTC偏移量为+1100,则需要减去 ,该值与您的事件的本地时间偏移以计算UTC 时间。在你的情况下,我相信这将是2014-03-31T04:00:00Z。这 实际上是最好留给代码,而不是试图 找出如何做自己。如果您在http://isdk.dev.live.com看看“创建 日历事件”样本它表明你 如何在JavaScript中做到这一点 - 也许有一个PHP相当于*

0

这是在不同的时区(-0000和+1100)的同一时间。

+0

我怎么能阻止它加入这个呢。?我只是想让API在给定的时间内创建结尾 – Baig

+0

嗯,我不是Outlook REST API的专家,但我想象/ 9898ef90931244e8位于时区+1100。您可能需要在发送日期中指定该时区,否则Outlook会将其转换为您(错误地)。 –

+0

我已经尝试了几种方式给时区,但他们都不工作,无论我给它什么时区,它都会给它增加11个小时 – Baig

1

尝试使用Z表示本地时间是这样的: 2014-03-31T15:00:00.000Z

所以这会是这样的

https://apis.live.net/v5.0/9898ef90931244e8/events?名称= testing_event &描述= EVENT_DESCRIPTION & START_TIME = 2014-03-31T15:00:00Z & event_start_time = 2014-03-31T16:00:00Z & =的access_token令牌去-这里&方法= POST

+0

这个没有什么区别,还增加了+1100 – Baig

+0

从API页面:时间必须结束以下列格式之一:+ hhmm,-hhmm,+ hh:mm,-hh:mm或Z,它表示小时和分钟数与UTC的偏移或协调。例如,-0700表示UTC之前七个小时。如果这次与前面的例子结合,结果是2011-05-10T14:29:00.000-0700或2011年5月10日上午7:29。 注意如果未指定Z,则时间将视为本地时间。另外,如果未指定end_time,则默认结束时间为指定的start_time后的30分钟。 – Eskiso

+0

在您的原始文章中,您也错过了.000:2014-03-31T16:00:00-0000应该2014-03-31T16:00:00.000-0000同样-0000不知道是否可以尝试-0100 – Eskiso