PHP / Javascript clock problem

Discussion in 'JavaScript' started by mameha1977, Dec 4, 2007.

  1. #1
    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>';
    
    ?> 
    
    PHP:

     
    mameha1977, Dec 4, 2007 IP