mameha1977
Dec 4th 2007, 6:53 pm
I got some code that makes a clock that shows the time. if you choose a region it shows the time in that region. I am using PHP to get the server time to use as the base time. It works fine for me here in Japan, but if a user in Germany looks at the clock the time goes totally wrong. This is confusing because it is using the server time.
Can anyone spot where the problem is?
<?php
echo '
<html>
<head>
</head>
<body>
<table border="0" width="200" cellspacing="0" cellpadding="3">
<form name="where">
<tr>
<td width="100%">
<select name="city" size="1" onchange="updateclock(this);">
<option value="" selected>--select timezone--</option>
<option value="-6">USA: Houston</option>
<option value="-5">USA: Charlotte</option>
<option value="-3">Argentina</option>
<option value="0">U.K. (GMT)</option>
<option value="1">France / Germany</option>
<option value="8">Singapore / China</option>
<option value="9">Japan / Korea</option>
<option value="11">Sydney</option>
</select>
</td>
</tr>
<tr>
<td width="100%">';
// now=new Date();
$now = date("Y/n/d/H/i/s", time());
echo '
<script language="JavaScript">
/*
Drop Down World Clock- By JavaScript Kit (http://www.javascriptkit.com)
Portions of code by Kurt @ http://www.btinternet.com/~kurt.grigg/javascript
This credit notice must stay intact
*/
if (document.all||document.getElementById)
document.write(\'<span id="worldclock" style="font:bold 16px Arial;"></span><br>\')
zone=0;
isitlocal=true;
ampm=\'\';
function updateclock(z){
zone=z.options[z.selectedIndex].value;
isitlocal=(z.options[0].selected)?true:false;
}
var i = 0;
function WorldClock(){
var servDateArray=\''.$now.'\'.split(\'/\');
var now=new Date(Number(servDateArray[0]),Number(servDateArray[1]),Number(servDateArray[2]),Number(servDateArray[3]),Number(servDateArray[4]),Number(servDateArray[5])+i);
i++;
ofst=now.getTimezoneOffset()/60;
secs=now.getSeconds();
sec=-1.57+Math.PI*secs/30;
mins=now.getMinutes();
min=-1.57+Math.PI*mins/30;
hr=(isitlocal)?now.getHours():(now.getHours() + parseInt(ofst)) + parseInt(zone);
hrs=-1.575+Math.PI*hr/6+Math.PI*parseInt(now.getMinutes())/360;
if (hr < 0) hr+=24;
if (hr > 23) hr-=24;
ampm = (hr > 11)?"PM":"AM";
statusampm = ampm.toLowerCase();
hr2 = hr;
if (hr2 == 0) hr2=12;
(hr2 < 13)?hr2:hr2 %= 12;
if (hr2<10) hr2="0"+hr2
var finaltime=hr2+\':\'+((mins < 10)?"0"+mins:mins)+\':\'+((secs < 10)?"0"+secs:secs)+\' \'+statusampm;
if (document.all)
worldclock.innerHTML=finaltime
else if (document.getElementById)
document.getElementById("worldclock").innerHTML=finaltime
else if (document.layers){
document.worldclockns.document.worldclockns2.document.write(finaltime)
document.worldclockns.document.worldclockns2.document.close()
}
setTimeout(\'WorldClock()\',1000);
}
window.onload=WorldClock
//-->
</script>
<!--Place holder for NS4 only-->
<ilayer id="worldclockns" width=100% height=35><layer id="worldclockns2" width=100% height=35 left=0 top=0 style="font:bold 16px Arial;"></layer></ilayer>
</td>
</form>
</tr>
</table>
</body>
</html>';
?>
Can anyone spot where the problem is?
<?php
echo '
<html>
<head>
</head>
<body>
<table border="0" width="200" cellspacing="0" cellpadding="3">
<form name="where">
<tr>
<td width="100%">
<select name="city" size="1" onchange="updateclock(this);">
<option value="" selected>--select timezone--</option>
<option value="-6">USA: Houston</option>
<option value="-5">USA: Charlotte</option>
<option value="-3">Argentina</option>
<option value="0">U.K. (GMT)</option>
<option value="1">France / Germany</option>
<option value="8">Singapore / China</option>
<option value="9">Japan / Korea</option>
<option value="11">Sydney</option>
</select>
</td>
</tr>
<tr>
<td width="100%">';
// now=new Date();
$now = date("Y/n/d/H/i/s", time());
echo '
<script language="JavaScript">
/*
Drop Down World Clock- By JavaScript Kit (http://www.javascriptkit.com)
Portions of code by Kurt @ http://www.btinternet.com/~kurt.grigg/javascript
This credit notice must stay intact
*/
if (document.all||document.getElementById)
document.write(\'<span id="worldclock" style="font:bold 16px Arial;"></span><br>\')
zone=0;
isitlocal=true;
ampm=\'\';
function updateclock(z){
zone=z.options[z.selectedIndex].value;
isitlocal=(z.options[0].selected)?true:false;
}
var i = 0;
function WorldClock(){
var servDateArray=\''.$now.'\'.split(\'/\');
var now=new Date(Number(servDateArray[0]),Number(servDateArray[1]),Number(servDateArray[2]),Number(servDateArray[3]),Number(servDateArray[4]),Number(servDateArray[5])+i);
i++;
ofst=now.getTimezoneOffset()/60;
secs=now.getSeconds();
sec=-1.57+Math.PI*secs/30;
mins=now.getMinutes();
min=-1.57+Math.PI*mins/30;
hr=(isitlocal)?now.getHours():(now.getHours() + parseInt(ofst)) + parseInt(zone);
hrs=-1.575+Math.PI*hr/6+Math.PI*parseInt(now.getMinutes())/360;
if (hr < 0) hr+=24;
if (hr > 23) hr-=24;
ampm = (hr > 11)?"PM":"AM";
statusampm = ampm.toLowerCase();
hr2 = hr;
if (hr2 == 0) hr2=12;
(hr2 < 13)?hr2:hr2 %= 12;
if (hr2<10) hr2="0"+hr2
var finaltime=hr2+\':\'+((mins < 10)?"0"+mins:mins)+\':\'+((secs < 10)?"0"+secs:secs)+\' \'+statusampm;
if (document.all)
worldclock.innerHTML=finaltime
else if (document.getElementById)
document.getElementById("worldclock").innerHTML=finaltime
else if (document.layers){
document.worldclockns.document.worldclockns2.document.write(finaltime)
document.worldclockns.document.worldclockns2.document.close()
}
setTimeout(\'WorldClock()\',1000);
}
window.onload=WorldClock
//-->
</script>
<!--Place holder for NS4 only-->
<ilayer id="worldclockns" width=100% height=35><layer id="worldclockns2" width=100% height=35 left=0 top=0 style="font:bold 16px Arial;"></layer></ilayer>
</td>
</form>
</tr>
</table>
</body>
</html>';
?>