Convert Local Time
by Laurie
HTML
<div id="ny">New York: <span id="nytime"></span></div>
<div id="chi">Chicago: <span id="chitime"></span></div>
<div id="pas">Pasadena: <span id="pastime"></span></div>
<div id="tok">Tokyo: <span id="toktime"></span></div>
<p> <span id="dst">not</span>dst </p>
CSS
div{
margin:10px
}
JavaScript
// function to calculate local time
// in a different city
// given the city's UTC offset
function calcTime(offset) {
//function calcTime(city, offset) {
// create Date object for current location
d = new Date();
//set options
var options = { weekday: "short", year: "numeric", month: "short",
day: "numeric", hour: "numeric", minute: "numeric" };
// convert to msec
// add local time zone offset
// get UTC time in msec
utc = d.getTime() + (d.getTimezoneOffset() * 60000);
// create new Date object for different city
// using supplied offset
nd = new Date(utc + (3600000*offset));
// return time as a string
//return "The local time in " + city + " is " + nd.toLocaleString();
//return nd.toLocaleString();
return nd.toLocaleString("en-US", options);
}
Date.prototype.stdTimezoneOffset = function() {
var jan = new Date(this.getFullYear(), 0, 1);
var jul = new Date(this.getFullYear(), 6, 1);
return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());
}
Date.prototype.dst = function() {
return this.getTimezoneOffset() < this.stdTimezoneOffset();
}
var today = new Date();
if (today.dst()) document.getElementById('dst').innerHTML = '';
//in dst (summer)
if (today.dst()) {
document.getElementById("nytime").innerHTML = calcTime('-4') + ' EDT';
document.getElementById("chitime").innerHTML = calcTime('-6');
document.getElementById("pastime").innerHTML = calcTime('-8');
document.getElementById("toktime").innerHTML = calcTime('+9');
//not in dst (winter)
} else {
document.getElementById("nytime").innerHTML = calcTime('-5') + ' EST';
document.getElementById("chitime").innerHTML = calcTime('-7');
document.getElementById("pastime").innerHTML = calcTime('-9');
document.getElementById("toktime").innerHTML = calcTime('+9');
}
// get Bombay time
//alert(calcTime('Bombay', '+5.5'));
// get Singapore time
//alert(calcTime('Singapore', '+8'));
// get London...