KOMPOOS.NL

tijd zone detection - javascript

home » manuals » javascript » tijd-zone-detectie.html

sitemap


voorbeeld tijdzone detectie

uitleg timezone detection

Deze routine zorgt er voor dat de tijdzone van een bezoeker wordt uitgelezen. In de variabele selectedIndex=i staat het resultaat van de javascript procedure. Die variabele bepaalt welke regel in de select wordt getoond. Maar met hetzelfde gemak kan je een array aanmaken, en de variabele gebruiken om de juiste positie te verkrijgen (in de array). Met een ajax-call kan je dan de gegevens (via PHP) wegschrijven om in een textfile (of database) de tijdzone van de bezoeker op te slaan (voor later gebruik in statistieken etc.).

html code voor de tijd zone detectie


<select name='zone_tijd' id='zone_tijd' style='width:500px'>
        <option value='-12:00,0'>( -12:00 ) Internationale westelijke datumgrens</option>
        <option value='-11:00,0'>( -11:00 ) Midway Island, Samoa</option>
        <option value='-10:00,0'>( -10:00 ) Hawaii</option>
        <option value='-09:00,1'>( -09:00 ) Alaska</option>
        <option value='-08:00,1'>( -08:00 ) Pacific Time (V.S. en Canada)</option>
        <option value='-07:00,0'>( -07:00 ) Arizona</option>
        <option value='-07:00,1'>( -07:00 ) Mountain Time (V.S. en Canada)</option>
        <option value='-06:00,0'>( -06:00 ) Central Amerika</option>
        <option value='-06:00,1'>( -06:00 ) Central Time (V.S. en Canada)</option>
        <option value='-05:00,0'>( -05:00 ) Indiana, Bogota, Lima, Quito, Rio Branco</option>
        <option value='-05:00,1'>( -05:00 ) Eastern time (V.S. en Canada)</option>
        <option value='-04:00,1'>( -04:00 ) Atlantic time (Canada), Manaus, Santiago</option>
        <option value='-04:00,0'>( -04:00 ) Caracas, La Paz</option>
        <option value='-03:30,1'>( -03:30 ) Newfoundland</option>
        <option value='-03:00,1'>( -03:00 ) Greenland, Brasilia, Montevideo</option>
        <option value='-03:00,0'>( -03:00 ) Buenos Aires, Georgetown</option>
        <option value='-02:00,1'>( -02:00 ) Mid-Atlantic</option>
        <option value='-01:00,1'>( -01:00 ) Azoren</option>
        <option value='-01:00,0'>( -01:00 ) Kaapverdie</option>
        <option value='00:00,0'>(  00:00 ) Casablanca, Monrovia, Reykjavik</option>
        <option value='00:00,1'>(  00:00 ) Greenwich mean time, Lissabon Londen</option>
        <option value='+01:00,1'>( +01:00 ) Amsterdam, Berlijn, Rome, Wenen, Praag, Brussel</option>
        <option value='+01:00,0'>( +01:00 ) West Centraal Afrika</option>
        <option value='+02:00,1'>( +02:00 ) Amman, Athene, Istanbul, Beirut, Cairo, Jerusalem</option>
        <option value='+02:00,0'>( +02:00 ) Harare, Pretoria</option>
        <option value='+03:00,1'>( +03:00 ) Baghdad, Moskou, St. Petersburg, Volgograd</option>
        <option value='+03:00,0'>( +03:00 ) Kuweitt, Riyadh, Nairobi, Tbilisi</option>
        <option value='+03:30,0'>( +03:30 ) Teheran</option>
        <option value='+04:00,0'>( +04:00 ) Abu Dhadi, Muscat</option>
        <option value='+04:00,1'>( +04:00 ) Baku, Yerevan</option>
        <option value='+04:30,0'>( +04:30 ) Kabul</option>
        <option value='+05:00,1'>( +05:00 ) Ekaterinburg</option>
        <option value='+05:00,0'>( +05:00 ) Islamabad, Karachi, Tashkent</option>
        <option value='+05:30,0'>( +05:30 ) Chennai, Kolkata, Mumbai, New Delhi, Sri Jayawardenepura</option>
        <option value='+05:45,0'>( +05:45 ) Kathmandu</option>
        <option value='+06:00,0'>( +06:00 ) Astana, Dhaka</option>
        <option value='+06:00,1'>( +06:00 ) Almaty, Nonosibirsk</option>
        <option value='+06:30,0'>( +06:30 ) Yangon (Rangoon)</option>
        <option value='+07:00,1'>( +07:00 ) Krasnoyarsk</option>
        <option value='+07:00,0'>( +07:00 ) Bangkok, Hanoi, Jakarta</option>
        <option value='+08:00,0'>( +08:00 ) Beijing, Hong Kong, Singapore, Taipei</option>
        <option value='+08:00,1'>( +08:00 ) Irkutsk, Ulaan Bataar, Perth</option>
        <option value='+09:00,1'>( +09:00 ) Yakutsk</option>
        <option value='+09:00,0'>( +09:00 ) Seoul, Osaka, Sapporo, Tokyo</option>
        <option value='+09:30,0'>( +09:30 ) Darwin</option>
        <option value='+09:30,1'>( +09:30 ) Adelaide</option>
        <option value='+10:00,0'>( +10:00 ) Brisbane, Guam, Port Moresby</option>
        <option value='+10:00,1'>( +10:00 ) Canberra, Melbourne, Sydney, Hobart, Wladiwostok</option>
        <option value='+11:00,0'>( +11:00 ) Magadan, Solomon Is., New Caledonia</option>
        <option value='+12:00,1'>( +12:00 ) Auckland, Wellington</option>
        <option value='+12:00,0'>( +12:00 ) Fiji, Kamchatka, Marshall Is.</option>
        <option value='+13:00,0'>( +13:00 ) Nuku'alofa</option>
</select>

het javascript voor de tijdzone detectie procedure


<script>
    /*global window: false */
    /*global document: false */
    function bereken_tijdzone(de_zone) {
        var uur = parseInt(de_zone, 10);
        de_zone -= parseInt(de_zone, 10);
        de_zone *= 60;
        var welke_plaats = parseInt(de_zone, 10);
        de_zone -= parseInt(de_zone, 10);
        de_zone *= 60;
        var welk_uur = uur;
        if (uur === 0) {
            welk_uur = "00";
        } else if (uur > 0) {
            welk_uur = (uur < 10) ? "+0" + uur : "+" + uur;
        } else {
            welk_uur = (uur > -10) ? "-0" + Math.abs(uur) : uur;
        }
        welke_plaats = (welke_plaats < 10) ? "0" + welke_plaats : welke_plaats;
        return welk_uur + ":" + welke_plaats;
    }
    function tijdzone() {
        var nu = new Date();
        var check_1_januari = new Date(nu.getFullYear(), 0, 1, 0, 0, 0, 0);
        var check_1_juni = new Date(nu.getFullYear(), 6, 1, 0, 0, 0, 0);
        var temp = check_1_januari.toGMTString();
        var check_2_januari = new Date(temp.substring(0, temp.lastIndexOf(" ") - 1));
        temp = check_1_juni.toGMTString();
        var check_2_juni = new Date(temp.substring(0, temp.lastIndexOf(" ") - 1));
        var naar_off = (check_1_januari - check_2_januari) / (1000 * 60 * 60);
        var dlight_off = (check_1_juni - check_2_juni) / (1000 * 60 * 60);
        var verschil;
        if (naar_off === dlight_off) {
            verschil = "0";
        } else {
            var het_halfrond = naar_off - dlight_off;
            if (het_halfrond >= 0) {
                naar_off = dlight_off;
            }
            verschil = "1";
        }
        var i;
        if (document.getElementById('zone_tijd')) {
            for (i = 0; i < document.getElementById('zone_tijd').options.length; i++) {
                if (document.getElementById('zone_tijd').options[i].value === bereken_tijdzone(naar_off) + "," + verschil) {
                    document.getElementById('zone_tijd').selectedIndex = i;
                    break;
                }
            }
        }
    }
    window.onload = tijdzone;
</script>
Gebruik voor alle voorbeelden op de http://kompoos.nl een valide html5 pagina.