## Zegarek wielostrefowy

Vancouver | Kair
New Jork | Delhi
Buenos Aires | Pekin
London | Tokio
Warszawa | Sydney

W odróżnieniu od większości skryptów tego typu, czas jest tutaj obliczany na podstawie czasu uniwersalnego (UTC), znanego też pod nazwą GMT (Greenwich Mean Time). Dlatego czas dla poszczególnych miast, będzie wyświetlany prawidłowo niezależnie od tego, w jakim miejscu na ziemi znajduje się użytkownik oglądający naszą stronę.

Na stronie można umieścić dowolną ilość kontrolek (inputów), wyświetlających czas w dowolnych miejscach na świecie. Funkcję Czas() należy wywołać tyle razy, ile kontrolek mamy w dokumencie. Pierwszym argumentem tej funkcji jest nazwa (name) kontrolki, natomiast drugim jest liczba określająca przesunięcie czasowe w stosunku do czasu uniwersalnego dla danego miasta.

Aby się przekonać jakie jest przesuniecie czasowe dla poszczególnych miast (rejonów) świata, możemy na przykład: dwukrotnie kliknąć zegarek na pasku zadań systemu Windows, następnie wybrać zakładkę "Strefa czasowa" i rozwinąć listę.

Jeżeli przesunięcie czasowe nie zawiera się w pełnej ilości godzin np:
(GMT -03:30) Nowa Funlandia
to czas ten (minus trzy i pół godziny) należy przeliczyć z systemu sześćdziesiętnego na dziesiętny. A więc wywołanie funkcji Czas() będzie wyglądało następująco:
Czas("nowafunl", -3.5);
a kontrolka wyświetlająca ten czas, umieszczona w sekcji <body>:
<input name="nowafunl" size="10">

Skrypt działa poprawnie na wszystkich komputerach świata, które mają prawidłowo skonfigurowane: zegar, datę i strefę czasową zgodnie z własną strefą. Skrypt, w sposób automatyczny, uwzględnia przesuwanie czasu w okresach letnim i zimowym.

Skopiuj przykładowy kod

W ramach HEAD

    <script type="text/javascript">
    <!--
    //written by Bogdan Blaszczak "BlaTek"
    //homepage http://blatek.board.pl

    function zegarek(offs){
     offs=offs+lato_offset;
     var g,m,s,teraz=new Date();
     with(teraz){
      setTime(getTime()+(offs*3600000));
      g=getUTCHours(); m=getUTCMinutes(); s=getUTCSeconds()}

     var czas=" "+(g<10?"0":"")+g;
     czas+=(m<10?":0":":")+m;
     czas+=(s<10?":0":":")+s;
     return czas;
    }

    function zegarStart(){
     var lato=new Date(2000,7,1), teraz=new Date();
     lato_offset=(teraz.getTimezoneOffset()==lato.getTimezoneOffset())?1:0;
     ustawCzas();
     setInterval('ustawCzas()',1000);
    }

    function ustawCzas(){
     function Czas(id,offs){
      document.clock.elements[id].value=zegarek(offs);
     }
     Czas("vancouver", -8);
     Czas("newyork", -5);
     Czas("buenos", -3);
     Czas("london", 0);
     Czas("warszawa", 1);
     Czas("kair", 2);
     Czas("delhi", 5.5);
     Czas("pekin", 8);
     Czas("tokio", 9);
     Czas("sydney", 10);
    }
    // -->
    </script>

W ramach BODY

    <body onload="zegarStart()">

    <form name="clock">
    <table border="0" width="500">

     <tr><td><input name="vancouver" size="10"> Vancouver</td>
         <td><input name="kair" size="10"> Kair</td></tr>
     <tr><td><input name="newyork" size="10"> New Jork</td>
         <td><input name="delhi" size="10"> Delhi</td></tr>
     <tr><td><input name="buenos" size="10"> Buenos Aires</td>
         <td><input name="pekin" size="10"> Pekin</td></tr>
     <tr><td><input name="london" size="10"> London</td>
         <td><input name="tokio" size="10"> Tokio</td></tr>
     <tr><td><input name="warszawa" size="10"> Warszawa</td>
         <td><input name="sydney" size="10"> Sydney</td></tr>

    </table>
    </form>