I'm trying to use google Time Zone API. I provide the longitude and latitude and the API give me the timezone.

How can I get the local time with this following value (dstOffset and rawOffset) ?

Here is the Json

{
   "dstOffset" : 0.0,
   "rawOffset" : -28800.0,
   "status" : "OK",
   "timeZoneId" : "America/Los_Angeles",
   "timeZoneName" : "Pacific Standard Time"
}

I have tried this javascript function but I don't get the correct time.

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);

Thanks for your help !

有帮助吗?

解决方案

You're close. The problem is in this line:

var nd = new Date(utc + (3600000*offset));

The offset given by the Json appears to be in seconds; you are treating it as though it is in hours. Change it to the following and it should start working:

var nd = new Date(utc + (1000*offset));

Here is the working jsFiddle.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top