3

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 !

user2037696
  • 1,055
  • 3
  • 16
  • 33

1 Answers1

5

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.

Brian Rogers
  • 125,747
  • 31
  • 299
  • 300
  • This is not working as expected for the city London, where the rawOffset returned is '0'. There is a one hour delay in the final time. Could you please brief how this calculation is done. – Vishnu Sureshkumar May 13 '15 at 08:20