Non ti correggo lo script perché è tedioso

comunque il problema è che dovresti sfruttare di più i metodi dell'oggetto Date, che di loro fanno già tutto...

codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script language="javascript" type="text/javascript">

function fuso(d, i) {
  // i sono le ore di differenza con d;
  return new Date(d.getTime()+i*60*60*1000);
  }

function my_time() {
  
  var date = new Date();
  London = fuso(date,-24);
  Bangkok = fuso(date, 5);
  
  document.writeln("A Roma sono le: "+date.toGMTString()+"
");
  document.writeln("A Londra sono le: "+London.toGMTString()+"
");
  document.writeln("A Bangkok sono le: "+Bangkok.toGMTString()+"
");
}
  
  


</script>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Fuso Orario</title>
</head>

<body onLoad="my_time();">
</body>
</html>
Chiaramente gli orari sono solo dimostrativi, ma come vedrai, il finto orario di Londra cambia anche il giorno nella rappresentazione completa.

Da un oggetto date (il metodo fuso restituisce un Date) ti tiri fuori le informazioni che vuoi e le formatti secondo i tuoi bisogni.
Ciao.