如何从谷歌地图计算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);
我说错了吗?
答案 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");