Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-从rawOffset Google时区API计算时间_Javascript_Google Maps_Datetime_Google Api_Google Maps Timezone - Fatal编程技术网

Javascript-从rawOffset Google时区API计算时间

Javascript-从rawOffset Google时区API计算时间,javascript,google-maps,datetime,google-api,google-maps-timezone,Javascript,Google Maps,Datetime,Google Api,Google Maps Timezone,我正在开发一个应用程序来获取城市的当地时间。我正在使用GoogleGeocodeAPI获取城市的纬度和经度,并将其传递给时区API 时区API返回以下消息 我需要计算以下各项的时间。因此,我从rawOffset获得了以下代码来获取本地时间 function calcTime(offset) { var d = new Date(); var utc = d.getTime() + (d.getTimezoneOffset() * 60000); var nd = new Date(utc + (

我正在开发一个应用程序来获取城市的当地时间。我正在使用GoogleGeocodeAPI获取城市的纬度和经度,并将其传递给时区API

时区API返回以下消息

我需要计算以下各项的时间。因此,我从
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);
但是,对于像伦敦、华盛顿、纽约这样的城市,这会延迟一个小时,而对于亚利桑那州,这会返回正确的时间

还有。我不知道计算时间的
本地时间
rawOffset
参数之间的这种关系。请解释此
rawOffset
参数是什么,以及如何修复某些城市的一小时延时

在谷歌时区API中,我读到了这一点

给定位置的本地时间是时间戳参数与结果中的dstOffset和RAWCOFFSET字段之和

这里的timestamp参数是什么?除了
133111200
,我什么都不能给

非常感谢您的帮助。提前谢谢

更新

修正:这是因为我在时区API中以
133111200
的形式传递
timestamp
参数。当我用下面的代码替换timestamp时,我从带有dstOffset和rawcoffset的googleapi得到了正确的响应

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

有谁能给我一个关于它是如何工作的技术解释吗?

你还没有考虑到夏令时的偏移,这就是为什么某些城市会关闭一个小时

calcTime(rawOffset+dstOffset);
时间戳包含日期和时间,因为DST只发生在一年中的某些时段。

返回的DSTDoffset也是“0”。考虑到华盛顿,现在返回的RangOffice是-18000,dStOffice是0,CalcTime返回4:13AM,但是实际时间是5:26AMI,怀疑它只是给出DST混乱的日期。使用编码今天的日期和时间,并将其作为API的时间戳。我已经更新了问题,请检查。这个问题已经解决了。这是因为我传递给时区API的时间戳。您硬编码了过去发生的日期(2012年3月7日星期三23:00:00 GMT+0000(GMT标准时间)),没有DST作为时间戳<代码>myDate=新日期();timeStamp=myDate.getTime()calcTime(rawOffset+dstOffset);