Google maps 如何从谷歌地图计算utc时间和本地时间?
如何从谷歌地图计算utc时间和本地时间 例如,这是来自google的json结果Google maps 如何从谷歌地图计算utc时间和本地时间?,google-maps,google-maps-api-3,utc,localtime,Google Maps,Google Maps Api 3,Utc,Localtime,如何从谷歌地图计算utc时间和本地时间 例如,这是来自google的json结果 { "dstOffset" : 0.0, "rawOffset" : -28800.0, "status" : "OK", "timeZoneId" : "America/Los_Angeles", "timeZoneName" : "Pacific Standard Time" } 我的职能, function calcTime(offset) { var d
{
"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);
我说的对吗?您可以随时使用谷歌提供的时区API来计算本地时间。从该API请求数据时,必须向以下API发出GET请求
https://maps.googleapis.com/maps/api/timezone/outputFormat?parameters
编辑
在参数中,所需值为lat/lng位置坐标和时间戳。时间戳始终是通过执行此操作可以获得的UTC时间。您可以直接将其作为UTC放入timestamp变量中,并获得响应
要计算本地时间,必须计算时间戳参数和结果中的dstOffset和rawOffset字段之和。dstOffset和rawOffset字段是在发送请求后获得的JSON响应。aDate()
只不过是自UTC 1970-1-1以来的毫秒数。如果你加上一些东西,你就改变了这个数字,这会把你的计算搞砸
如何显示该数字(即时区)是一个格式问题。
这就是moment.js存在的原因。它使datetimes具有可读性,而无需更改底层数据
从他们的文档中:var
c=moment.tz(1403454068850,“美国/多伦多”)代码>谢谢您的回答localTime:=time.Date…
我认为这不是javascript。对不起,我正在使用javascript。请参阅编辑后的答案。您也不需要编写Javascript函数。您可以直接从答案中提到的链接获取时间戳,并获取可以在时区API中作为时间戳传递的UTC。@AniV当您添加时间戳(UTC)、dstOffset(夏令时偏移量)和RAWCOFFSET(与UTC的偏移量)并创建日期时,例如:新日期(timestamp+dstOffset+RAWCOFFSET*1000),它给出了本地小时的正确数值,但它的时区表示UTC,这是错误的。我发现我必须从google响应中提取数值,并使用矩时区JS获得正确时区的值。我做错了什么?