我正尝试每24小时在特定时间(上午9点而不是午夜)重置计时器。下面给出了下一个午夜。现在如何获得下一个上午9点?
var d = new Date();
d.setHours(24,0,0,0);
答案 0 :(得分:3)
如果您的意思是第二天上午9点,无论当前时间是上午9点还是下午9点之后,有趣的是您都可以这样做,只需将9加到24即可得出33(不,实际上):
function setNextDay9(dt) {
dt.setHours(33, 0, 0, 0);
}
// Test with start time before 9 a.m.
var d1 = new Date(2018, 10, 7, 7);
console.log("before", d1.toISOString());
setNextDay9(d1);
console.log("after ", d1.toISOString());
// Test with start time after 9 a.m.
var d2 = new Date(2018, 10, 7, 11);
console.log("before", d2.toISOString());
setNextDay9(d2);
console.log("after ", d2.toISOString());
JavaScript的Date
对象以这种方式(根据规范)处理过渡。
如果您的意思是下一个上午9点(如果上午9点之前是同一天,如果之后则是第二天),则需要分支:
function setNext9(dt) {
dt.setHours(dt.getHours() < 9 ? 9 : 33);
}
// Test with start time before 9 a.m.
var d1 = new Date(2018, 10, 7, 7);
console.log("before", d1.toISOString());
setNext9(d1);
console.log("after ", d1.toISOString());
// Test with start time after 9 a.m.
var d2 = new Date(2018, 10, 7, 11);
console.log("before", d2.toISOString());
setNext9(d2);
console.log("after ", d2.toISOString());
JavaScript的Date
对象以这种方式(根据规范)处理过渡。
答案 1 :(得分:1)
如果您要处理时间,我强烈建议您使用moment.js。
var nineAm = moment().hour(9) // will set the time to 9am
if moment().hour() === 9 {
//reset time
}
答案 2 :(得分:0)
var d = new Date();
d.setHours(9,0,0,0)
let tomorrow = d.setDate(d.getDate() +1)
将返回一个时间戳,以将其转换回可读的日期