【发布时间】:2019-10-02 05:17:46
【问题描述】:
我正在尝试比较网站访问者位置和设定位置之间的小时数,方法是获取他们的当前时间,然后将其插入到带有该位置的 Google Time Zone API 中。但是,无论我如何扭动它,似乎都是 1 小时或 2 小时不正确。
我读错了吗?
请求:
https://maps.googleapis.com/maps/api/timezone/json?location=40.7127753,-74.0059728×tamp=1569956387&key=API_KEY
输出:
{
"dstOffset" : 3600,
"rawOffset" : -18000,
"status" : "OK",
"timeZoneId" : "America/New_York",
"timeZoneName" : "Eastern Daylight Time"
}
请求的第一部分是纽约市的经度和纬度(从 Google Places API 检索),第二个值(时间戳)是自 1970 年 1 月 1 日以来的秒数。这是我使用以下 JavaScript 从访问者那里得到的:
+ new Date()
if (!Date.now) {
Date.now = function() { return new Date().getTime(); }
}
Math.floor(Date.now() / 1000)
..这对我来说导致: 1569956387(秒)
Date.now() 返回自 1970 年 1 月 1 日以来的毫秒数,因此我需要通过除以 1000 转换为秒数,因为 Google 时区 API 使用自 1970 年 1 月 1 日以来的秒数。
根据 Google Time Zone API 文档:
rawOffset:给定位置与 UTC 的偏移量(以秒为单位)。这不会影响夏令时。
..rawOffset 是 JSON 输出
timestamp 将所需时间指定为自 UTC 1970 年 1 月 1 日午夜以来的秒数。 Time Zone API 使用时间戳来根据位置的时区确定是否应应用夏令时。请注意,API 不考虑历史时区。也就是说,如果您指定过去的时间戳,API 不会考虑该位置之前处于不同时区的可能性。
..timestamp 是请求链接中指定的自 1970 年 1 月 1 日以来的秒数
我的当地时间目前是晚上 9:59 (1569956387)。计算 (18000/60)/60 或 (21600/60)/60 告诉我纽约市应该分别有 5 或 6 个小时的路程,而事实是 7 个小时的路程。
【问题讨论】:
标签: javascript api timezone