Этот JS-скрипт выполняет прогрессивный подсчет, начиная с нуля. Вместо этого я хотел бы, чтобы сценарий JS отсчитывал время от установленного времени (чч.мм.сс). Пожалуйста, что я должен изменить? Сценарий должен сохранять localStorage и идентификатор startTime.
<div id = "display-area"></div>
var timer;
var startTime;
function start() {
startTime = parseInt(localStorage.getItem('startTime') || Date.now());
localStorage.setItem('startTime', startTime);
timer = setInterval(clockTick, 100);
}
function clockTick() {
var currentTime = Date.now(),
timeElapsed = new Date(currentTime - startTime),
hours = timeElapsed.getUTCHours(),
mins = timeElapsed.getUTCMinutes(),
secs = timeElapsed.getUTCSeconds(),
ms = timeElapsed.getUTCMilliseconds(),
display = document.getElementById("display-area");
display.innerHTML =
(hours > 9 ? hours : "0" + hours) + ":" +
(mins > 9 ? mins : "0" + mins) + ":" +
(secs > 9 ? secs : "0" + secs);
};
start();
Таймер работает, но должен отсчитывать от установленного времени.
Вы можете получить таймер обратного отсчета, расширив расчет clockTick()
так, чтобы timeElapsed
рассчитывался как "время начала минус время, прошедшее с начала обратного отсчета".
Введя countdownDuration
как currentTime - startTime
, мы можем создать таймер обратного отсчета, который отсчитывает от startTime
следующим образом:
countdownDuration = currentTime - startTime
timeElapsed = startTime - countdownDuration
Это можно представить в вашем коде следующим образом:
function clockTick() {
const currentTime = Date.now(),
countdownDuration = currentTime - startTime,
timeElapsed = new Date(startTime - countdownDuration),
hours = timeElapsed.getUTCHours(),
mins = timeElapsed.getUTCMinutes(),
secs = timeElapsed.getUTCSeconds(),
ms = timeElapsed.getUTCMilliseconds(),
display = document.getElementById("display-area");
display.innerHTML =
(hours > 9 ? hours : "0" + hours) + ":" +
(mins > 9 ? mins : "0" + mins) + ":" +
(secs > 9 ? secs : "0" + secs);
};
Пожалуйста, как я могу установить время начала обратного отсчета? Например: 12:30 (чч.мм).