Просто переместите свой код внутрь setInterval ()
let i = 5;
const timer = setInterval(() => {
var date = getTime;
var time = time.getHour() + ":" + time.getMinute() + ":" + time.getSecond()
getElementById('clock').innerHTML = time;
i--;
if (i < 0) {
clearInterval(timer)
}
}, 1000);
Итак, setInterval () позволяет вашему коду выполняться асинхронно, это означает, что он не блокирует остальную часть выполнения, потому что он выполняется «отдельно» (я бы хотел бы описать это лучше, но мне не хватает навыков английского sh).
setInterval запускает ваш код каждые 1000 мс (как указано) навсегда, если вы не очистите его с помощью clearInterval (). Если вы хотите сделать таймер, это очень полезно.
this () => {} - стрелочная функция. Вы также можете использовать function () {}, если хотите, в этом случае это не имеет значения.
Вот ссылка w3schools для setInterval (): https://www.w3schools.com/jsref/met_win_setinterval.asp
а вот ссылка MDN на асинхронный javascript: https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Asynchronous
Удачи в вашем проекте;)