Суть: нужно сделать счётчик выводящий разницу между 9-ю вечера текущего дня и текущим временем
Набросал скрипт:
function countdown() {
var now = new Date();
var current = new Date();
//console.log(current);
current = current.setHours(21);
current = new Date(current).getTime();
current = current.toString();
console.log(current);
var serialDate = Date.parse(current);
var endDate = new Date(serialDate);
var currentTime = now.getTime();
var deltaTime = endDate - currentTime;
var ms = Math.floor(deltaTime % 60);
var s = Math.floor(deltaTime / 1000);
var m = Math.floor(s / 60);
var h = Math.floor(m / 60);
var d = Math.floor(h / 24);
h %= 24;
m %= 60;
s %= 60;
var weeks = Math.floor(d / 7);
var d = d - weeks * 2;
// set text in browser table
if (d<=0 && h<=0 && m<=0 && s<=0) {
document.getElementById("hours").textContent = "00";
document.getElementById("minutes").textContent = "00";
document.getElementById("seconds").textContent = "00";
clearTimeout(countdown);
} else {
h = (h < 10) ? "0" + h : h;
m = (m < 10) ? "0" + m : m;
s = (s < 10) ? "0" + s : s;
document.getElementById("hours").textContent = h;
document.getElementById("minutes").textContent = m;
document.getElementById("seconds").textContent = s;
}
setTimeout(countdown, 2000);
}
countdown();
проблема в том что после current = current.setHours(21); current выводится уже в мили секундах и в итоге разница var deltaTime = endDate - currentTime; считается неправильно. А вот если конечную точку отсчёта устанавливать вот так Date.parse("June 22, 2018 15:00:00"); то всё норм.
Как быть?