JavaScript-从RAWOFFSET Google TimeZone API中计算时间



我正在开发一个申请,以获取城市的本地时间。我正在使用Google Geocode API来获得城市的纬度和经度,并且将其传递给时区API。

时区API返回以下

{
"dstOffset" : 0,
"rawOffset" : 0,
"status" : "OK",
"timeZoneId" : "Europe/London",
"timeZoneName" : "Greenwich Mean Time"
}

我需要计算以下时间。从此,我获得了以下代码,可以从rawOffset获取本地时间。

function calcTime(offset) {
var d = new Date();
var utc = d.getTime() + (d.getTimezoneOffset() * 60000);
var nd = new Date(utc + (3600000*offset));
alert("The local time is " + nd.toLocaleString());
}
calcTime(-28800.0);

但对于London, Washington, NewYork等城市的时间延迟了一个小时,并为Arizona返回正确的时间。

也是如此。我不知道local timerawOffset参数之间的这种关系以计算时间。请说明此rawOffset参数是什么,以及如何修复某些城市的一个小时延迟。

在Google时区API文档中,我读到

给定位置的本地时间是时间戳参数的总和,结果是结果。

这里的时间戳参数是什么?除了 1331161200

我什么都不能

任何帮助将不胜感激。预先感谢。

update

fix :这是因为我将timestamp参数作为1331161200在时区API中传递。当我用以下代码替换时间戳时,我将通过DSTOFFSET和RAWOFFSET从Google API中获得正确的响应。

myDate = new Date('1/1/1970');
timeStamp = myDate.getTime();

任何人都可以给我关于它如何工作的技术解释吗?

您没有考虑过日光节省的时间偏移,这就是为什么某些城市落下一个小时的原因。

calcTime(rawOffset+dstOffset);

Timestamp仅包含AS DST的日期和时间,仅在一年中的某些时期内发生。https://stackoverflow.com/a/10428184/3583980

相关内容

  • 没有找到相关文章