Простая демонстрация как это можно сделать на стороне клиента. В моём примере много кода, потому что я пытался его сделать максимально интерактивным. В вашем же случае будет конкретно установленная дата и время, а потому код будет гораздо меньше
Основная логика в том, чтобы на стороне клиента запустить таймер, который будет отрабатывать каждую секунду и проверять нынешнее время равно времени что нам нужно? Если да, то добавляем класс и больше не вызываем таймер. Если нет, то вызываем таймер:
const datetimeEl = document.querySelector('input');
const div = document.querySelector('.div');
const getDatetimeWithoutMilliseconds = date => {
const currentDatetime = date.toISOString();
const currentDatetimeParts = currentDatetime.split(':');
return currentDatetimeParts[0] + ':' + currentDatetimeParts[1];
}
const date = new Date();
date.setMinutes(date.getMinutes() + 1);
datetimeEl.value = getDatetimeWithoutMilliseconds(date);
console.log('Time is set to:', datetimeEl.value);
const checkTime = () => {
const now = getDatetimeWithoutMilliseconds(new Date());
const limit = datetimeEl.value;
if (now === limit) div.classList.add('activated');
else setTimeout(checkTime, 1000);
}
datetimeEl.addEventListener('change', () => {
console.clear();
console.log('Time is set to:', datetimeEl.value);
div.classList.remove('activated');
checkTime();
});
checkTime();
.div {
width: 100px;
height: 100px;
background-color: red;
}
.div.activated {
background-color: green;
}
Set time:
<input type="datetime-local" />
<div class="div">Color will change</div>