• 03-08-2020, 10:19:04
    #1
    Merhaba arkadaşlar. Aşağıdaki Javascrşpt ile dünyanın farklı yerlerindeki saatleri göstermeye çalışıyorum. Birden çok yerin saatini aynı sayfada göstermek için aynı kodu 6-7 kez kopyalıyorum. Bunun daha pratik yolu var mı? Yardımcı olursanız sevinirim.

    var yer = 'America/New_York';
    var yer1 = 'Europe/Paris';
    var yer2 = 'Europe/Moscow';
    var yer3 = 'Europe/Istanbul';
    var yer4 = 'Europe/London';
    var yer5 = 'Asia/Shanghai';

    //Yukarıdaki kod ile zaman dilimlerini belirleyerek aşağıdaki kodları çoğaltıp ilgili alanları değişiyorum. yer1, yer2..


    var aSaat = document.getElementById("saat"); //aSaat adında bir değişken tanımladık, bu ismi çoğaltınca değişiyorum
    function format(saatcek) {
    var bSaat = saatcek.toString();
    if (bSaat.length == 1) {
    return "0" + bSaat;
    } else {
    return bSaat;
    }}
    function saatGuncelleme() { //Burada bilgisayarımızdan saati çekiyoruz.
    var tarih = new Date();

    var TimeZone = new Date(tarih.toLocaleString('en-US', { timeZone: yer })); //yer ismini çoğaltınca değişiyorum.

    var saat = TimeZone.getHours(); //Burada saati çekiyoruz.
    var dakika = TimeZone.getMinutes(); //Burada dakikayı çekiyoruz.
    var saniye = TimeZone.getSeconds(); //Burada saniyeyi çekiyoruz.
    aSaat.textContent = format(saat) + ":" + format(dakika) + ":" + format(saniye); //Burada ekranımıza çıktımızı veriyoruz. assat ismini çoğaltınca değişiyorum
    }
    setInterval(saatGuncelleme, 1000);
  • 03-08-2020, 10:36:03
    #2
    Bir tane fonksiyon yaz . Tek bir JavaScript dosyası haline getir. İstediğin sayfada o fonksiyonu çağır.
  • 03-08-2020, 10:54:07
    #3
    mustafaz adlı üyeden alıntı: mesajı görüntüle
    Bir tane fonksiyon yaz . Tek bir JavaScript dosyası haline getir. İstediğin sayfada o fonksiyonu çağır.
    Yanıt için teşekkürler. Ancak javascript tecrübem fazla yok. Kod örneği verirseniz belki yapabilirim.
  • 03-08-2020, 10:58:40
    #4
    https://jsbin.com/faqedanoga/1/edit?html,js,output

    İki dk birşeyler karaladım, buradan bakabilirsin.
  • 03-08-2020, 11:13:09
    #5
    Divin idisi 'time_<bolgenin_adi>(new_york,paris,moscow,istanbu l vb)'


    <div id="time_new_york"></div>
    <div id="time_paris"></div>
    <div id="time_moscow"></div>
    const ZONE_LIST = [
    'America/New_York',
    'Europe/Paris',
    'Europe/Moscow',
    'Europe/Istanbul',
    'Europe/London',
    'Asia/Shanghai'
    ];
    
    
    const INIT_PROPS = ZONE_LIST.map(function(ZONE){
    let elem_id = "time_"+ZONE.split('/')[1].toLowerCase();
    return {
    el:document.getElementById(elem_id),
    id:elem_id,
    timeZone:ZONE
    }
    });
    
    
    //Yukarıdaki kod ile zaman dilimlerini belirleyerek aşağıdaki kodları çoğaltıp ilgili alanları değişiyorum. yer1, yer2..
    
    
    function format(saatcek) {
    var bSaat = saatcek.toString();
    if (bSaat.length == 1) {
    return "0" + bSaat;
    } else {
    return bSaat;
    }}
    function saatGuncelleme(elem,zone) { //elementi ve bölgeyi gönderiyoruz. //Burada bilgisayarımızdan saati çekiyoruz.
    //var tarih = new Date();
    
    //var TimeZone = new Date(tarih.toLocaleString('en-US', { timeZone: yer })); //yer ismini çoğaltınca değişiyorum.
    let time = new Date(new Date().toLocaleString('en-US', { timeZone: zone }))
    
    if(elem){
    let saat = time.getHours(); //Burada saati çekiyoruz.
    let dakika = time.getMinutes(); //Burada dakikayı çekiyoruz.
    let saniye = time.getSeconds(); //Burada saniyeyi çekiyoruz.
    
    elem.textContent = format(saat) + ":" + format(dakika) + ":" + format(saniye); //Burada ekranımıza çıktımızı veriyoruz. assat ismini çoğaltınca değişiyorum
    }
    }
    
    INIT_PROPS.forEach(function(PROP){
    
    if(PROP.el){
    setInterval(function(){
    saatGuncelleme(PROP.el,PROP.timeZone);
    },1000)
    }else{
    console.error(PROP.id+' idsi bulunamadı.');
    }
    
    });
  • 03-08-2020, 12:05:39
    #6
    Teşekkür ederim. Elinize sağlık, Çok işime yaradı.
    Obsidya adlı üyeden alıntı: mesajı görüntüle
    https://jsbin.com/faqedanoga/1/edit?html,js,output

    İki dk birşeyler karaladım, buradan bakabilirsin.
    darness adlı üyeden alıntı: mesajı görüntüle
    Divin idisi 'time_<bolgenin_adi>(new_york,paris,moscow,istanbu l vb)'


    <div id="time_new_york"></div>
    <div id="time_paris"></div>
    <div id="time_moscow"></div>
    const ZONE_LIST = [
    'America/New_York',
    'Europe/Paris',
    'Europe/Moscow',
    'Europe/Istanbul',
    'Europe/London',
    'Asia/Shanghai'
    ];
    
    
    const INIT_PROPS = ZONE_LIST.map(function(ZONE){
    let elem_id = "time_"+ZONE.split('/')[1].toLowerCase();
    return {
    el:document.getElementById(elem_id),
    id:elem_id,
    timeZone:ZONE
    }
    });
    
    
    //Yukarıdaki kod ile zaman dilimlerini belirleyerek aşağıdaki kodları çoğaltıp ilgili alanları değişiyorum. yer1, yer2..
    
    
    function format(saatcek) {
    var bSaat = saatcek.toString();
    if (bSaat.length == 1) {
    return "0" + bSaat;
    } else {
    return bSaat;
    }}
    function saatGuncelleme(elem,zone) { //elementi ve bölgeyi gönderiyoruz. //Burada bilgisayarımızdan saati çekiyoruz.
    //var tarih = new Date();
    
    //var TimeZone = new Date(tarih.toLocaleString('en-US', { timeZone: yer })); //yer ismini çoğaltınca değişiyorum.
    let time = new Date(new Date().toLocaleString('en-US', { timeZone: zone }))
    
    if(elem){
    let saat = time.getHours(); //Burada saati çekiyoruz.
    let dakika = time.getMinutes(); //Burada dakikayı çekiyoruz.
    let saniye = time.getSeconds(); //Burada saniyeyi çekiyoruz.
    
    elem.textContent = format(saat) + ":" + format(dakika) + ":" + format(saniye); //Burada ekranımıza çıktımızı veriyoruz. assat ismini çoğaltınca değişiyorum
    }
    }
    
    INIT_PROPS.forEach(function(PROP){
    
    if(PROP.el){
    setInterval(function(){
    saatGuncelleme(PROP.el,PROP.timeZone);
    },1000)
    }else{
    console.error(PROP.id+' idsi bulunamadı.');
    }
    
    });