﻿var adjust = 0;

function showZoneTime(){
	var tokyodiff = -600;
	var beijingdiff = -540;
	var longondiff = +0;
	var newyorkdiff = +300;
	var chiagodiff = +360;
	
	var tokyoTime = getDateTime(tokyodiff);
	var beijingTime = getDateTime(beijingdiff);
	var londonTime = getDateTime(longondiff);
	var newyorkTime = getDateTime(newyorkdiff);
	var chicagoTime = getDateTime(chiagodiff);
	
	document.getElementById("tokyo").innerHTML = tokyoTime;
	document.getElementById("beijing").innerHTML = beijingTime;
	document.getElementById("london").innerHTML = londonTime;
	document.getElementById("newyork").innerHTML = newyorkTime;
	document.getElementById("chicago").innerHTML = chicagoTime;
	setTimeout("showZoneTime()", 1000); // 循环定时调用
}

showZoneTime();


/*var tokyodiff = -540;
var tokyo = getDateTime(tokyodiff);
document.getElementById("t").innerHTML = tokyo
*/

function getDateTime (diff) {
	// 时间参数
	var gmtOffset=eval(diff+adjust);
	var today = new Date();
	var year = today.getYear() + 00;
	var month = today.getMonth()+1;
	var date = today.getDate();
	var day = today.getDay();
	var hour = today.getHours()-1;
	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("",
	"1","2","3",
	"4","5","6",
	"7","8","9",
	"10","11","12");
	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;
	return dateTime;
}