按小时和分钟创建日期对象

时间:2018-11-22 13:32:48

标签: javascript date datetime

我想设置一个setTimeout函数,需要计算回调的秒数。假设我要在 12:00(HH-MM)执行一个函数,我必须计算到现在的时间跨度。如果时间已经过去,那么第二天就可以了。

我用new Date()获取当前日期时间

我知道我可以通过使用秒来计算时间跨度

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

是否可以通过传递小时和分钟来创建第二个日期对象,还是我必须自己计算它?

一个例子是new Date('12:45')

3 个答案:

答案 0 :(得分:2)

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
}

查看此Documentation on MDN

答案 1 :(得分:2)

您可以操纵日期,然后检查它是否是过去的日期。如果是这样,只需再增加一天。

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

答案 2 :(得分:-1)

有可能,但是您需要提供整个时间字符串(我们可以通过调用Date()并添加缺少的部分):

const time = '12:45'
const current = new Date()
const dateTimeTwo = new Date(`${current.getFullYear()}-${current.getMonth()+1}-${current.getDate()} ${time}`)