@Arbuz12345

Как реализовать автообновляемый таймер автовебинаров по московскому времени?

2) таймер автовебинаров. Логика такая. Каждый день в 19:00 по московскому времени проводится автовебинар. Наша задача взять 19:00 за нулевую отметку и отсчитывать 24 часа до следущих 19:00. То есть в 18:00 по МСК таймер покажет 01:00:00, а в 18:32 таймер покажет 00:28:00

Есть такой код, только не учитывается другой часовой пояс у клиента:
<div id="timeleft"></div>

let out = document.getElementById('timeleft');
const fullday = 24*3600e3;
const tzdiff = new Date().getTimezoneOffset()*160e3;

let timer = () => {
let diff = fullday - (Date.now()-tzdiff) % fullday

if (diff <= 0) return clearInterval(i);
diff /= 1e3;
out.innerText = [
diff / 3600 % 24 |0,
diff / 60 % 60 |0,
diff / 1 % 60 |0
].map(d => d<10?'0'+d:d).join(':');
};

let i = setInterval(timer, 450);
timer();
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 3
@LionG
Не городите никаких таймеров. Воспользуйтесь готовым пакетом CRON из NPM.

var CronJob = require('cron').CronJob;
var job = new CronJob('* * * * * *', function() {
  console.log('You will see this message every second');
}, null, true, 'America/Los_Angeles');
job.start();
Ответ написан
Комментировать
sergiks
@sergiks Куратор тега JavaScript
♬♬
В 2021 в Москве перехода на летнее время нет, поэтому можно просто считать всё в UTC.
Время 19:00 Мск это «всегда» 16:00 UTC. До него и считать.
Сделать объект Date, скорректировать ему минуты, как будто он в UTC, сравнивать с таким же Date где часы установлены на 16:00:00
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы