Search code examples
javascriptdate

add or subtract timezone difference to javascript Date


What is the best approach to add or subtract timezone differences to the targetTime variable below. The GMT timezone values comes from the DB in this format: 1.00 for London time, -8.00 for Pacific time and so on.

Code looks like this:

date = "September 21, 2011 00:00:00";
targetTime = new Date(date);

Solution

  • You can use Date.getTimezoneOffset which returns the local offset from GMT in minutes. Note that it returns the value with the opposite sign you might expect. So GMT-5 is 300 and GMT+1 is -60.

    var date = "September 21, 2011 00:00:00";
    var targetTime = new Date(date);
    var timeZoneFromDB = -7.00; //time zone value from database
    //get the timezone offset from local time in minutes
    var tzDifference = timeZoneFromDB * 60 + targetTime.getTimezoneOffset();
    //convert the offset to milliseconds, add to targetTime, and make a new Date
    var offsetTime = new Date(targetTime.getTime() + tzDifference * 60 * 1000);