我未能使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
请注意,由于显而易见的原因,我修改了API密钥。
请注意,我是在上午11:43请求公共汽车。我已经结合日期和没有约会来尝试这一点,但没有任何区别。
我得到的回复看起来非常有效,但它给了我这样的时间: "时间":" /日期(1427222880000-0700)/"
...如果我的查询时间是5:43,那将是合理的,但事实并非如此。该日期格式清楚地表明自1970年以来的"毫秒,UTC" (绝望中我尝试添加&减去7小时,但没有任何意义)。文件清楚地说明我应该在当地时区指定11:43的时间,即" 11:43"。
假设Bing文档错误或实现错误,我尝试任意添加6小时或从查询时间减去18小时(这需要将日期添加到URL中),但我什么也没得到有道理。我无法在API结果与公共Bing浏览器应用之间找到任何对应关系。
我无法找出微软要求的人。
有什么想法吗?
答案 0 :(得分:1)
我有以下可能或可能不可靠的解决方案,它违反了规范,但它现在有效:
将0700添加到时间戳,即将其转换为“负7小时”。如果有一个'+'而不是' - '那么符号就会被反转,虽然我怀疑从来没有使用过(不知道他们如何改变符号)。
减去悉尼的时区偏移量,即-11小时(即增加11小时)。
这给了我一些我可以放入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'的定义。)