我想设置一个setTimeout
函数,需要计算回调的秒数。假设我要在 12:00(HH-MM)执行一个函数,我必须计算到现在的时间跨度。如果时间已经过去,那么第二天就可以了。
我用new Date()
获取当前日期时间
我知道我可以通过使用秒来计算时间跨度
const difference = dateTimeOne.getTime() - dateTimeTwo.getTime();
const differenceInSeconds = difference / 1000;
是否可以通过传递小时和分钟来创建第二个日期对象,还是我必须自己计算它?
一个例子是new Date('12:45')
答案 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
}
答案 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}`)