Выполнение скрипта по времени JS

Есть код

  var startScript = (new Date().getHours()+1)%24;//Берем текущий час например 21 прибавляем 1, 21 + 1 = 22 это час когда нужно запустить скрипт
if(new Date().getHours() >= 22)//Если мы зашли на сайт и минуты равны 0, например 22:00 то сразу же запускаем наш скрипт
    myScript();
loop();//Вызываем наш цикл
function loop(){
    var date = new Date();//Берем текущее время
    if(date.getMinutes() == 0 && date.getHours()==startScript){//Если минут равны нулю и текущий час тому в котором нужно запустить скрипт
          // startScript = (startScript+1)%24 ;//прибавляем +1 к часу в котором нужно запустить скрипт
            myScript();// и запускаем скрипт
    }
    setTimeout(loop,500);//проверка текущего времени 1 раз в 30 секунд, если нужно чтобы скрипт запускался с точностью до секунды (22:00:00) поставить ~500
}

function myScript(){
    link.href = 'assets/css/dark.css'; // включаем темную тему
    localStorage.setItem('themeStyle', 'dark'); // записываем значение в localStorage
}

function myScript2(){
    link.href = 'assets/css/light.css'; // включаем светлую тему
    localStorage.setItem('themeStyle', 'light'); // записываем значение в localStorage
}

Как сделать так чтобы допустим функция myScript запускалась с 22-00 и действовала до 07-00, а после 07-01 запускалась myScript 2 и действовала до 21-59


Ответы (1 шт):

Автор решения: Leonid

С 22:00 до 6:59 включительно. С 7:00 до 21:59 включительно.

setInterval(detectTime, 1000);    

function detectTime(){
	let h = (new Date()).getHours();
	if(h >= 22 || h < 7) myScript();
  else myScript2();
}

function myScript(){
	console.log('Night');
}

function myScript2(){
	console.log('Day');
}

→ Ссылка