Cześć,
Napisałem kiedyś taki zegar w js:
var czas = new Date().getTime()-(<?php echo time(); ?>*1000);
function odliczanie()
{
var dzisiaj= new Date();
dzisiaj.setTime(dzisiaj.getTime()-czas);
var rok = dzisiaj.getFullYear();
var dzien = dzisiaj.getDate();
if(dzien<10) dzien= "0"+dzien;
var miesiac = dzisiaj.getMonth()+1;
if(miesiac<10) miesiac = "0"+miesiac;
var godzina = dzisiaj.getHours();
if (godzina<10) godzina = "0"+godzina;
var minuta = dzisiaj.getMinutes();
if (minuta<10) minuta = "0"+minuta;
var sekunda = dzisiaj.getSeconds();
if (sekunda<10) sekunda = "0"+sekunda;
$("#godzina span").html("<b style='font-size: 30px;'>"+godzina+":"+minuta+":"+sekunda+"</b> <br>"+dzien+"-"+miesiac+"-"+rok);
setTimeout("odliczanie()",1000);
}
Postanowiłem go odświeżyć na... lepiej napisany? i coś mi nie wychodzi.
(function(w, d) {
const corr = (j) => {
if (j < 10) return "0" + j;
else return j;
}
const getDate = () => {
return new Date();
}
const getNowTime = () => {
return getDate().getTime() - (<?= time(); ?> * 1000);
}
const nowTime = (p) => {
const now = getDate();
now.setTime(now.getTime() - getNowTime());
switch (p) {
case "h":
return corr(now.getHours());
break;
case "m":
return corr(now.getMinutes());
break;
case "s":
return corr(now.getSeconds());
break;
}
}
const viewHour = () => {
d.getElementById("h").innerHTML = nowTime("h");
setTimeout( () => {
viewHour();
}, 1000 * 60 * 60);
}
const viewMinute = () => {
d.getElementById("m").innerHTML = nowTime("m");
setTimeout( () => {
viewMinute();
}, 1000 * 60);
}
const viewSecond = () => {
d.getElementById("s").innerHTML = nowTime("s");
setTimeout( () => {
viewSecond();
}, 1000);
}
viewHour();
viewMinute();
viewSecond();
})(window, document);
Działa wszystko poza odświeżaniem się wyświetlanego czasu. Skrypt się odświeża co podany czas, ale nie wyświetlający się czas. Któryś raz podchodzę do poprawy kodu, ale za każdym razem ten sam problem i wyczerpały mi się już pomysły.
Z góry dzięki za pomoc.