admin管理员组

文章数量:1336120

I want to setup a setTimeout function and need to calculate the seconds for the callback. Let's say I want to execute a function at 12:00 (HH-MM) I have to calculate the timespan up to this time. If the time has already passed the next day is relevant.

I get the current date time with new Date()

I know I can calculate the timespan in seconds by using

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

Is there a way creating a second date object by passing in the hours and minutes or do I have to calculate it on my own?

An example would be new Date('12:45')

I want to setup a setTimeout function and need to calculate the seconds for the callback. Let's say I want to execute a function at 12:00 (HH-MM) I have to calculate the timespan up to this time. If the time has already passed the next day is relevant.

I get the current date time with new Date()

I know I can calculate the timespan in seconds by using

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

Is there a way creating a second date object by passing in the hours and minutes or do I have to calculate it on my own?

An example would be new Date('12:45')

Share asked Nov 22, 2018 at 13:32 user9945420user9945420
Add a ment  | 

2 Answers 2

Reset to default 4

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
}

See this Documentation on MDN

You can manipulate the date and then check whether it is in the past. If it is, just add another day.

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);

本文标签: javascriptcreate date object by hours and minutesStack Overflow