2013-04-12 49 views
8

在我的客户端应用程序中,我有基于I.P的skyhook API的Latitude &经度信息。Google时区API - 时间戳参数

现在基于经纬度信息我需要找出客户端的时区信息。但在谷歌时区API文档https://developers.google.com/maps/documentation/timezone/我看到时间戳是一个必填字段。在这种情况下,我需要做些什么。

另外,你能否帮助我理解时间戳对应的是什么?例如: - 如果我的应用程序服务器位于美国(例如PST时区),并且它使google API调用传递服务器时间戳。

如果用户从印度客户端应用程序登录传递经纬度信息到应用程序服务器以获取时区信息API将如何提供dstOffset和rawOffset?即如果我添加服务器时间戳与dstOffset和rawOffset我会得到客户端机器时区信息?

+0

Google地图时区API使用时间戳来根据位置的时区确定是否应用夏令时。 – NoName

回答

2

您提供的文档链接清楚地表明时间戳应该是UTC,并且它用于显示正确的DST偏移值。它还将控制timeZoneName字段是否在名称中显示为“标准”或“日光”。

如果你不关心这个,只想要timeZoneId字段,那么你传递什么值并不重要。

+1

作为一个试图解决这个问题的人,这个答案基本上重申了(imo写得不好的)文档阐明的内容。 – radpin

8

我一直在Google's Timezone API上搔着头几分钟,特别是在时间戳参数上。也许这将需要:

在圣地亚哥,我们(现在,在8月)的GMT偏移量为-8,因为夏令时。 However, in November we'll have a GMT offset of -7

那么Google应该返回哪个gmt抵消? -7或-8?它们都是有效的,但这取决于你在哪一天进行测量。

输入Timestamp参数。现在正在运行的服务,并使用timestamp value of August 2015,我得到这样的回应:

{ 
    "dstOffset" : 3600, 
    "rawOffset" : -28800, 
    "status" : "OK", 
    "timeZoneId" : "America/Los_Angeles", 
    "timeZoneName" : "Pacific Daylight Time" 
} 

但是,如果我碰到了timestamp to November 2015(一旦圣地亚哥的夏令时,我结束了这一点):

{ 
    "dstOffset" : 0, 
    "rawOffset" : -28800, 
    "status" : "OK", 
    "timeZoneId" : "America/Los_Angeles", 
    "timeZoneName" : "Pacific Standard Time" 
} 

在这两种情况下,rawOffset都是相同的,但由于我提供的时间戳,DST发生了更改。如果您只想知道原始时区,则时间戳不重要。

但是,如果您希望应用程序在8月份的圣地亚哥上午8:00和11月份的圣地亚哥上午8:00可靠地执行某些操作,则需要使用时间戳。

换句话说,知道圣地亚哥是的价值通常是 -7小时偏离格林威治标准时间的价值。如果您正在使用时区,则可能会尝试确保您的UTC时间与该位置的实际人员所经历的时间相匹配。因此,DST抵消是至关重要的。