<div id="time"></div>
let clock = document.getElementById("time")
var time = setInterval(function() {
var date = new Date();
clock.innerHTML = (date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds());
}, 1000);
// Остановить исполнение можно вызовом clearInterval(time).
let interval = setInterval(() => {
if(clock.textContent <= '8:00:0'){
alert('Урок начался!');
clearInterval(interval)
}
else(clock.textContent >= '8:40:0'){
alert('Урок закончился!');
clearInterval(interval)
}
}, 500)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<p class="p"></p>
</body>
<script>
let p = document.querySelector('.p')
let date = new Date
setInterval(() => {
if(date.getHours() == 8 && date.getMinutes() == 40){
p.textContent = "Урок окончен"
}
}, 0);
setInterval(() => {
if(date.getHours() == 8 && date.getMinutes() == 0){
p.textContent = "Урок начат"
}
}, 0);
</script>
</html>
setTimeout()
на нужные количества миллисекунд.