создать объект даты по часам и минутам - PullRequest
0 голосов
/ 22 ноября 2018

Я хочу настроить функцию setTimeout и мне нужно вычислить секунды для обратного вызова.Допустим, я хочу выполнить функцию в 12: 00 (ЧЧ-ММ) Я должен рассчитать временной интервал до этого времени.Если время уже прошло, следующий день релевантен.

Я получаю текущую дату с помощью new Date()

Я знаю, что могу рассчитать временной интервал в секундах, используя

const difference = dateTimeOne.getTime() - dateTimeTwo.getTime();
const differenceInSeconds = difference / 1000;

Есть ли способ создать второй объект даты, передав часы и минуты, или мне нужно рассчитать его самостоятельно?

Примером может быть new Date('12:45')

Ответы [ 3 ]

0 голосов
/ 22 ноября 2018

Это возможно, но вам нужно предоставить всю строку времени (которую мы можем получить, вызвав Date() и добавив недостающую часть):

const time = '12:45'
const current = new Date()
const dateTimeTwo = new Date(`${current.getFullYear()}-${current.getMonth()+1}-${current.getDate()} ${time}`)
0 голосов
/ 22 ноября 2018

Вы можете манипулировать датой, а затем проверить, было ли это в прошлом.Если это так, просто добавьте еще один день.

const d = new Date();
d.setHours(12);
d.setMinutes(0);
d.setSeconds(0);
d.setMilliseconds(0);

if (d < new Date()) {
  d.setDate(d.getDate() + 1);
}

console.log(d);
0 голосов
/ 22 ноября 2018

var minutes = 42;

for (var hours = 1; hours < 24; hours+=3) {
  var newAlarm = setAlarm(hours, minutes);
  out(newAlarm)
}



function out(date) {
  var now = new Date()
  
  if (date.getDate() != now.getDate()) {
    console.log('tomorrow: ' + date.getHours() + ":" + date.getMinutes())
  } else {
    console.log('today: ' + date.getHours() + ":" + date.getMinutes())
  }
}
function setAlarm(hours, minutes) {
  var now = new Date();
  var dateTarget = new Date();
  
  dateTarget.setHours(hours)
  dateTarget.setMinutes(minutes)
  dateTarget.setSeconds(0)
  dateTarget.setMilliseconds(0)
  
  if (dateTarget < now) {
    dateTarget.setDate(dateTarget.getDate()+1)
  }
  return dateTarget
}

См. Документация по MDN

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...