Можно ли добавить часы в new Date()?
Допустим, у меня есть 2000 часов, и мне надо, чтоб показывало типа 2000:59:00, можно ли как-то закинуть в пустой new Date() и сделать отсчет назад с каждой секундой с setInterval?
Ответы (1 шт):
Автор решения: nörbörnën
→ Ссылка
Такому таймеру не нужны даты - нужно перевести часы в секунды и раз в секунду запускать функцию, которая будет отнимать секунду и раскладывать оставшиеся секунды на час:минута:секунда
let timeout;
runTimer(2);
function runTimer(hours = 1) {
if (timeout) {
clearTimeout(timeout);
}
let fn;
fn = (seconds) => {
const h = Math.trunc(seconds / 3600);
const s = seconds % 60;
const m = ((seconds - s) % 3600) / 60;
document.getElementById('timer').innerHTML = [
h,
`${m}`.padStart(2, 0),
`${s}`.padStart(2, 0)
].join(':');
if (seconds > 0) {
timeout = setTimeout(() => fn(seconds - 1), 1000);
}
};
fn(hours * 60 * 60);
}
<p>Допустим, у меня есть 2000 часов, и мне надо, чтоб показывало типа 2000:59:00, можно ли как-то закинуть в пустой new Date() и сделать отсчет назад с каждой секундой с setInterval?</p>
<p id="timer"></p>