Bing Maps转换API:我是否错误地格式化了查询日期时间或错误地解析输出日期时间?

时间:2015-03-24 23:46:29

标签: bing-maps

我未能使Bing Maps API正常运行。我输入一个查询"如何使用公共交通工具从Annandale到Eastwood(悉尼)?"并获得与我所查询的时间完全不同的结果。

此处记录了API:

https://msdn.microsoft.com/en-us/library/ff701717.aspx

在这里:

https://msdn.microsoft.com/en-us/library/ff701718.aspx

文档未能指定回复的日期格式,但我认为这是正确的:

http://weblogs.asp.net/bleroy/dates-and-json

所以这是我的疑问: http://dev.virtualearth.net/REST/V1/Routes/Transit?wp.0=-33.886620,151.171720&wp.1=-33.785780,151.075740&timeType=Departure&dateTime=11:43:00&maxSolns=3&output=json&key=(redacted)

请注意,由于显而易见的原因,我修改了API密钥。

请注意,我是在上午11:43请求公共汽车。我已经结合日期和没有约会来尝试这一点,但没有任何区别。

我得到的回复看起来非常有效,但它给了我这样的时间: "时间":" /日期(1427222880000-0700)/"

...如果我的查询时间是5:43,那将是合理的,但事实并非如此。该日期格式清楚地表明自1970年以来的"毫秒,UTC" (绝望中我尝试添加&减去7小时,但没有任何意义)。文件清楚地说明我应该在当地时区指定11:43的时间,即" 11:43"。

假设Bing文档错误或实现错误,我尝试任意添加6小时或从查询时间减去18小时(这需要将日期添加到URL中),但我什么也没得到有道理。我无法在API结果与公共Bing浏览器应用之间找到任何对应关系。

我无法找出微软要求的人。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我有以下可能或可能不可靠的解决方案,它违反了规范,但它现在有效:

  1. 将0700添加到时间戳,即将其转换为“负7小时”。如果有一个'+'而不是' - '那么符号就会被反转,虽然我怀疑从来没有使用过(不知道他们如何改变符号)。

  2. 减去悉尼的时区偏移量,即-11小时(即增加11小时)。

  3. 这给了我一些我可以放入Java'Date'实例的东西,即“new Date(x)',它代表一个独立于任何时区的时间。

    我希望我可以使用“自UTC以来的毫秒数”并忽略“0700”,因为我们的系统将这些时间存储在“自UTC以来的毫秒数”中,但我无法使其工作。

    一切都与Bing错误地解析悉尼GTFS文件的假设一致,将它们解释为Redmond时代而不是悉尼时代。

答案 1 :(得分:0)

如评论中所述,返回的日期信息是正确的。 JSON响应中返回的DataTime值的格式是OData DateTime:

“/Date([ticks][“+” | “-” ][offset])/”

[ticks] =自1970年1月1日午夜以来的毫秒数

[offset] =加或减的分钟数

您可以在此处找到相关文档:http://www.odata.org/documentation/odata-version-2-0/JSON-format/

答案 2 :(得分:0)

您提供的第二个链接说:

  

JSON响应将出发和到达时间作为DateTime字符串返回,例如1318005467000-0700。字符串中的第一个整数(1318005467000)表示自UTC时间1970年1月1日午夜12:00起的秒数。字符串的其余部分(-0700)表示您必须应用以获取当地时间的小时数偏移量。例如,整数1318005467000表示时间< 10/7/2011 4:37:47 PM'。当您应用-0700偏移时,您将本地时间计算为' 10/7/2011 9:37:47 AM'。有关更多信息,请参阅DateTime结构。

所以当地时间11:48。 (不要问我关于' local'的定义。)