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



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

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

我知道我可以使用以秒为单位计算时间跨度

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

有没有办法通过传递小时和分钟来创建第二个约会对象,或者我必须自己计算?

例如new Date('12:45')

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 上的此文档

您可以操作日期,然后检查它是否在过去。如果是,再加一天。

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

这是可能的,但您需要提供整个时间字符串(我们可以从调用Date()中获得并添加缺失的部分(:

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