Wpis z mikrobloga

#programowanie #javascript

Taki oto kod znalazłem na stronie PKP Intercity, odpowiada za pokazywanie aktualnego czasu.



var czas = new Date(1470489914049);

function zegar()
{
czas = new Date(czas.getTime() + 1000);
godzina = czas.getHours();
if (godzina <= 9) {
godzina = "0" + godzina;
}
minuta = czas.getMinutes();
if (minuta <= 9) {
minuta = "0" + minuta;
}
sekunda = czas.getSeconds();
if (sekunda <= 9) {
sekunda = "0" + sekunda;
}

document.getElementById('clock').innerHTML = godzina + ":" + minuta + ":" + sekunda;
}

zegar();
setInterval("zegar()", 1000);
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@edwin20: To jest po prostu c-----o napisane, jakoś działa, ale szkoda patrzeć. M. in. setInterval(fn, 1000) niekoniecznie będzie się odpalał co równo sekundę, więc jak na zegar związany jednak z koleją to trochę słabo, bo szybko może nabrać niedokładności. Już od biedy mogliby po prostu przy każdym obiegu liczyć deltę czasu i ją dodawać do czasu od odpalenia skryptu, żeby wiedzieć ile minęło. Poza tym globale, nazewnictwo po polsku -
  • Odpowiedz
M. in. setInterval(fn, 1000) niekoniecznie będzie się odpalał co równo sekundę, więc jak na zegar związany jednak z koleją to trochę słabo, bo szybko może nabrać niedokładności.


@rbielawski: wytykasz bledy innym a sam nie widzisz ze niedokladnosc bedzie zawsze wynosila ponizej 1 sekundy? Walnij intervala co 300ms i dokladnosc bedzie ponizej 300ms. Co to wogole za filozofia jest?
  • Odpowiedz
@karer: Udowodnij mi, że się mylę, ale po pobieżnym przejrzeniu tego, co tam napisano uważam, że niedokładność będzie się zmieniać z każdym 'obiegiem' setInterval, bo co OKOŁO sekundę będzie dodawana równo sekunda do niby-aktualnego czasu - czyli błąd może się sumować i zwiększać wraz z upływem czasu.
  • Odpowiedz