I am trying to create world clock using the following JavaScript code.
The clock is showing on the screen but its not ticking. My aim is to add clocks for different time zones in the same screen. I can add several clocks but they are not ticking.
<script language="javascript">
var timerRunning = false;
var timezone = "Greenwich Mean Time"; // what time zone are you in ?
var adjust = 0;
function timeCheck(diff) {
if (timerRunning) {
clearTimeout(updatetime);
timerRunning = false;
}
gmtOffset = eval(diff);
var tdate_01 = new checkDateTime("zonetime");
var tdate_02 = new checkDateTime("testt");
}
function checkDateTime(clckID) {
var today = new Date();
var year = today.getYear() + 1900;
var month = today.getMonth()+1;
var date = today.getDate();
var day = today.getDay();
var hour = today.getHours();
var minute = today.getMinutes();
var second = today.getSeconds();
var lastSat = date - (day+1);
while (lastSat < 32) lastSat+=7;
if (lastSat > 31) lastSat+=-7;
var firstSat = date - (day+1);
while (firstSat > 0) firstSat+=-7;
if (firstSat < 1) firstSat+=7;
if ((((month == 4) && (date >= firstSat)) || month > 4) &&
(month < 11 || ((month == 10) && day <= lastSat))) adjust += 60;
yourOffset = (new Date()).getTimezoneOffset();
yourOffset = yourOffset + adjust;
var xx = navigator.appName
var xy = navigator.appVersion;
xy = xy.substring(0,1);
if ((xy == 4) && (xx == "Netscape")) yourOffset = yourOffset+adjust;
if ((((month == 4) && (date > 20)) || month > 4) && (month < 11 || ((month == 10) &&
day < 30))) adjust -= 60;
ourDifference = eval(gmtOffset - yourOffset);
var half = eval(ourDifference % 60);
ourDifference = Math.round(ourDifference / 60);
hour = eval(hour - ourDifference);
var m = new Array("",
"Jan","Feb","Mar",
"Apr","May","Jun",
"Jul","Aug","Sept",
"Oct","Nov","Dec");
var leap = eval(year % 4);
if ((half == -30) || (half == 30)) minute += 30;
if (minute > 59) minute -= 60, hour++;
if (minute < 0) minute += 60, hour--;
if (hour > 23) hour -= 24, date += 1;
if (((month == 4) || (month == 6) ||
(month == 9) || (month == 11)) && (date==31)) date = 1, month ++;
if (((month == 2) && (date > 28)) && (leap != 0)) date = 1, month ++;
if ((month == 2) && (date > 29)) date = 1, month++;
if (hour < 0) hour += 24, date --;
if ((date == 32) && (month == 12)) month = m[1], date = 1, year++;
if (date == 32) date = 1, month++;
if ((date < 1) && (month == 1)) month= m[12], date = 31, year--;
if (date < 1) date = 31, month --;
if (((month == 4) || (month == 6) ||
(month== 9) || (month == 11)) && (date == 31)) date = 30;
if ((month == 2) && (date > 28)) date = 29;
if (((month == 2) && (date > 28)) && (leap != 0)) date=28;
for (i=1; i<13; i++) {
if (month == i) {
month = m[i]; break;
}
}
var dateTime = hour;
dateTime = ((dateTime < 10) ? "0":"") + dateTime;
dateTime = " " + dateTime;
dateTime += ((minute < 10) ? ":0" : ":") + minute;
dateTime += ((second < 10) ? ":0" : ":") + second;
dateTime += (hour >= 12) ? " PM, " : " AM, ";
dateTime += month + " " + date + ", " + year;
var mainDiv = document.getElementById(clckID).innerHTML = dateTime;
updatetime=setTimeout("checkDateTime()", 900);
timerRunning = true;
}
</script>
<select onchange="timeCheck(this.value)" size="0" align="center">
<option value="">SELECT --> COUNTRY</option>
<option value="+480">Pacific</option> // Australia UTC offset value is 10
<option value="+420">Central</option>
<option value="+300">Estern</option>
<option value="+600">Hawaii</option>
<option value="+360">Mexico</option>
<option value="-330">New Delhi</option>
<option value="-480">HONG KONG</option>
<option value="-540">TOKYO</option>
<option value="+0">London</option>
</select>
<div id="zonetime"></div>
<div id="testt"></div>
on
setTimeoutyou forgot the ID