Converting a timestamp to UTC time.
To display a timestamp in UTC around the world instead of in the users local timezone you use getTimezoneOffset, multiply it by 60,000 and then subtract that from your timestamp.
var rd = new Date.getTimezoneOffset()*60000, time = new Date((1349797266.032 * 1000) - rd); console.log('UTC timestamp is ' + time);
Calculating the users timezone
To calculate the users timezone we need to determine the offset between the current time and the UTC time. To do that we use the getUTCHours method and the compare the two dates.
var dateATmp = new Date(2013, 0, 1, 0, 0, 0, 0), dateA = new Date(2013, 0, 1, dateATmp.getUTCHours(), 0, 0, 0); console.log('Your timezone is GMT ' + (dateATmp - dateA) / 3600000);
Determining if the user observes daylight savings time
Calculating if the user observes daylight savings time (DST) is a little long winded but is certainly possible. We need to calculate the timezone difference between January and July. To do that we create the two dates, one in their current timezone and the other in UTC. We then divide the difference by 3600000 to get the hour offset and if they are the same DST is not observed.
var dateATmp = new Date(2013, 0, 1, 0, 0, 0, 0), dateA = new Date(2013, 0, 1, dateATmp.getUTCHours(), 0, 0, 0), dateBTmp = new Date(2013, 6, 1, 0, 0, 0, 0), dateB = new Date(2013, 6, 1, dateBTmp.getUTCHours(), 0, 0, 0), diffStdTime = (dateATmp - dateA) / 3600000, diffDaylightTime = (dateBTmp - dateB) / 3600000, dst = (diffStdTime == diffDaylightTime) ? 'not': ''; console.log('DST is %s observed here.', dst);