Я как-то сделал страницу, содержание и оформление которой менялись в зависимости от времени суток. Обошёлся без
setTimeout — всякий раз при загрузке страницы срабатывал примерно такой скрипт:
let time = false;
let d = new Date();
if (d.getHours() < 9) {
time = true
}
if (time) {
div.classList.add('active')
}
Блок будет виден только ночью (или только днём).
Но если блок должен появляться, скажем, в 30 минут каждого часа, то придётся использовать и
setTimeout.