10

在我的客户端应用程序中,我有来自 skyhook API 基于其 IP 的纬度和经度信息

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

您还可以帮我理解时间戳对应的内容吗?例如:- 如果我的应用程序服务器在美国(比如 PST 时区)并且它使谷歌 API 调用传递服务器时间戳。

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

4

3 回答 3

9

几分钟以来,我一直在摸索谷歌的 Timezone API ,特别是时间戳参数。也许这将列出需求:

在圣地亚哥,由于夏令时,我们(现在是 8 月)的 GMT 偏移量为 -8。但是,在 11 月,我们的 GMT 偏移量将是 -7

那么谷歌应该返回哪个 GMT 偏移量?-7 还是 -8?它们都是有效的,但这取决于您在哪一天进行测量。

输入时间戳参数。现在运行该服务,并使用August 2015 的时间戳值,我得到以下响应:

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

但是,如果我将时间戳增加到 2015 年 11 月(一旦圣地亚哥没有夏令时,我就会得到这个结果):

{
   "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 偏移量至关重要。

于 2015-08-21T14:11:32.960 回答
3

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

如果您不关心这一点并且只想要该timeZoneId字段,那么您传递的值无关紧要。

于 2013-04-12T15:19:45.540 回答
0

尝试这个

DateDiff("s", "1/1/1970", DateTime.Now)
于 2019-07-01T22:56:01.850 回答