<!-- ============ BEGIN INTERNATIONAL CLOCKS ============ -->
var timerID;

function tzone(tz, os, ds) {
	this.ct = new Date(0); // datetime
	this.tz = tz; // code
	this.os = os; // GMT offset
	this.ds = ds; // has daylight savings
}

function UpdateClocks() {
	// www.timeanddate.com/worldclock
	var ct = new Array(
		new tzone('NYC: ', -5, 1),
		new tzone('LON: ',  0, 1),
		new tzone('DBA: ', +4, 0),
		new tzone('HKG: ', +8, 0)
	);

	var dt = new Date();	// [GMT] time according to machine clock
	var startDST = new Date(dt.getFullYear(), 3, 1);

	while (startDST.getDay() != 0) {
		startDST.setDate(startDST.getDate() + 1);
	}

	var endDST = new Date(dt.getFullYear(), 9, 31);

	while (endDST.getDay() != 0) {
		endDST.setDate(endDST.getDate() - 1);
	}

	var ds_active; // DS currently active

	if (startDST < dt && dt < endDST) ds_active = 1;
	else ds_active = 0;

	// Adjust each clock offset if that clock has DS and in DS.
	for(n=0 ; n<ct.length ; n++) {
		if (ct[n].ds == 1 && ds_active == 1) ct[n].os++;
	}
	
	// compensate time zones
	gmdt = new Date() ;

	for (n=0 ; n<ct.length ; n++) {
		ct[n].ct = new Date(gmdt.getTime() + ct[n].os * 3600 * 1000);
	}

	document.getElementById('clock1').innerHTML = ClockString(ct[0].ct);
	document.getElementById('clock2').innerHTML = ClockString(ct[1].ct);
	document.getElementById('clock3').innerHTML = ClockString(ct[2].ct);
	document.getElementById('clock4').innerHTML = ClockString(ct[3].ct);

	timerID = window.setTimeout("UpdateClocks()", 1001) ;
}

function ClockString(dt) {

	var stemp, ampm ;

	var dt_year = dt.getUTCFullYear();
	var dt_month = dt.getUTCMonth() + 1;
	var dt_day = dt.getUTCDate();
	var dt_hour = dt.getUTCHours();
	var dt_minute = dt.getUTCMinutes();
	var dt_second = dt.getUTCSeconds();

	dt_year = dt_year.toString() ;

	if (0 <= dt_hour && dt_hour < 12)	{
		ampm = 'am';
		if (dt_hour == 0) dt_hour = 12;
	} else {
		ampm = 'pm' ;
		dt_hour = dt_hour - 12;
		if (dt_hour == 0) dt_hour = 12;
		if (dt_hour < 10) dt_hour = '0' + dt_hour;
	}

	if (dt_minute < 10) dt_minute = '0' + dt_minute ;
	stemp = dt_hour + ":" + dt_minute + " " + ampm;// + dt_second + ' ' + ampm ;

	return stemp ;
}
<!-- ============ END INTERNATIONAL CLOCKS ============ -->