如何从google地图计算UTC时间和本地时间?

How to calculate the utc time and the local time from google map?

如何根据google地图计算UTC时间和本地时间?

例如,这是 json 来自 google、

的结果
{
   "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);

我说得对吗?

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

发出 GET 请求
https://maps.googleapis.com/maps/api/timezone/outputFormat?parameters

编辑

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

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

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

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

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