所以我有以下代码,它适用于一天中的特定时间,例如:下午4点,但我也希望在一天内的其他时间调用此特定功能。
我可能还需要在上午7点,上午11点,或上午7点,上午11点和下午4点拨打电话。任何帮助都会很棒。
setInterval(function interval(){
var now = new Date();
var time = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 14, 0, 0, 0) - now;
if (time < 0) {
time += 86400000;
}
setTimeout(function () {
my_function();
timeout();
}, time);
return interval;
}(),1800000);
答案 0 :(得分:0)
如何使用此功能:每小时检查当前小时是否与您想要的小时数组匹配,如果匹配,则执行自定义功能
function checkHour(){
var d = new Date();
var hours_to_run=[1,13,17,23];
if(hours_to_run.indexOf(d.getHours()) != -1){
runCustomFunction();
}
setTimeout(checkHour, getMilisecondsLeft());
}
function runCustomFunction(){
console.log('yay its 1am, 1pm, 5pm or 11pm!!');
}
function getMilisecondsLeft(){
var d = new Date();
return 1000*60*60 - (d.getMinutes()*1000*60 + d.getSeconds()*1000+ d.getMilliseconds());
}
setTimeout(checkHour, getMilisecondsLeft());
答案 1 :(得分:0)
这个怎么样?它会为每个所需的小时计划超时,然后在其中一个超时时间过后重新安排:
function schedule(time) {
var now = new Date(),
next = new Date(now.getFullYear(), now.getMonth(), now.getDate(),
time, 0, 0, 0),
diff = next - now;
if (diff < 0) {
diff += 86400000;
}
setTimeout(function () {
my_function();
schedule(time);
}, diff);
}
var times = [7, 11, 16];
times.forEach(schedule);