【问题标题】:Google timezone API - timestamp parameterGoogle timezone API - 时间戳参数
【发布时间】:2013-04-05 04:02:37
【问题描述】:

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

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

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

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

【问题讨论】:

  • Google Maps Time Zone API 使用时间戳来根据位置的时区确定是否应应用夏令时。

标签: timezone timestamp timestamp-with-timezone


【解决方案1】:

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

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

【讨论】:

  • 作为一个试图弄清楚这一点的人,这个答案基本上重申了(imo 写得不好)文档的说明。
【解决方案2】:

我已经在Google's Timezone API 上摸索了几分钟,特别是在时间戳参数上。也许这会列出需求:

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

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

输入时间戳参数。现在运行该服务,并使用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 可靠地执行某项操作,则需要使用时间戳。

换句话说,知道圣地亚哥通常与 GMT 相差 -7 小时有什么价值。如果您使用时区,您可能会尝试确保您的 UTC 时间与该位置的真人所经历的时间相匹配。因此,DST 偏移量至关重要。

【讨论】:

    【解决方案3】:

    试试这个

    DateDiff("s", "1/1/1970", DateTime.Now)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-24
      • 2023-03-27
      • 2012-01-29
      • 1970-01-01
      • 2018-11-03
      • 2020-06-19
      相关资源
      最近更新 更多