@eshran

Реакция в 00:00, как сделать?

Мне нужно сделать определённое действие РОВНО в 00:00
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
function cloneOrCreateDate(date) {
  return date instanceof Date ? new Date(date) : new Date();
}
function getMidnightDate(date) {
  const d = cloneOrCreateDate(date);
  d.setHours(0);
  d.setMinutes(0);
  d.setSeconds(0);
  d.setMilliseconds(0);
  return d;
}

function addDaysToDate(days, date) {
  const d = cloneOrCreateDate(date);
  d.setDate(d.getDate() + days);
  return d;
}

function timeOffset(d1, d2) {
  return Math.abs(d1 - d2);
}

setTimeout(() => {
  // логика в полночь
}, timeOffset(Date.now(), addDaysToDate(1, getMidnightDate())));
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
IgorPI
@IgorPI
Очевидно, что каждую секунду следует проверять некоторое условие.
И скорее всего в setInterval.

Если говорить о простом.

Но можно юзать специальную библиотеку, честно признаюсь не юзал планировщик на ноде.
Но принципы планировщиков похожи.
Ответ написан
Alexandre888
@Alexandre888
Javascript-разработчик
const getCurrentTime = () => {
  let date = new Date(),
    hours = "",
    minutes = "";
  if (String(date.getHours()).length < 2) {
    hours += String(0) + String(date.getHours())
  } else {
    hours = `${date.getHours()}`
  }
  if (String(date.getMinutes()).length < 2) {
    minutes += String(0) + String(date.getMinutes())
  } else {
    minutes = `${date.getMinutes()}`
  }
  return `${hours}:${minutes}`
}

if (getCurrentTime() === '00:00') {
  // действие
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы