如何从谷歌地图计算utc时间和当地时间?

时间:2015-03-02 17:10:08

标签: google-maps google-maps-api-3 utc localtime

如何从谷歌地图计算utc时间和当地时间?

例如,这是谷歌的json结果,

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

我的功能,

   function calcTime(offset) {
        var d = new Date();
        var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
        var nd = new Date(utc + (1000*offset));

        return nd.toLocaleString();
    }

用法,

// Calculate the time.
var local = calcTime(-28800.0);
var utc = calcTime(0.0);

我说错了吗?

2 个答案:

答案 0 :(得分:0)

您始终可以使用Google提供的Timezone API来计算当地时间。在从此API请求数据时,您必须向以下API发出GET请求。

https://maps.googleapis.com/maps/api/timezone/outputFormat?parameters

修改

在参数中,所需的值是lat / lng中位置的坐标和时间戳。 时间戳始终是您通过此link获得的UTC时间。您可以直接将其作为UTC添加到timestamp变量中并获取响应。

要计算本地时间,您必须计算timestamp参数的总和,以及结果中的dstOffset和rawOffset字段。 dstOffset和rawOffset字段是发送请求后获得的JSON响应。

答案 1 :(得分:0)

Date()只不过是1970-1-1 UTC以来的毫秒数。如果你向它添加一些东西,你就会改变这个数字,这会搞砸你所有的计算。

该号码的显示方式(即时区)是格式化问题。 这就是moment.js存在的原因。它使日期时间成为可读的,而无需更改基础数据。

来自他们的文档:var c = moment.tz(1403454068850, "America/Toronto");