/**
* 定時任務(wù)
* 例子: dealTask(1000 * 60 * 60* 24,function(){ console.log(11) }) ; //每天固定0:00執(zhí)行
*/
async function dealTask(time, task) {
console.log(`設(shè)置了一個定時任務(wù) time ${time}`);
function getHMSTIme(time) {
let hours = parseInt(`${time / (1000 * 60 * 60)}`);
let minutes = parseInt(`${time / (1000 * 60)}`);
let seconds = parseInt(`${time / 1000}`);
return { hours, minutes, seconds };
}
function getDateTime(time) {
let date = new Date(time);
let day = date.getDay();
let hours = date.getHours();
let minutes = date.getMinutes();
let seconds = date.getSeconds();
return { day, hours, minutes, seconds };
}
let { hours, minutes, seconds } = getHMSTIme(time);
console.log(` hours${hours} minutes${minutes} seconds${seconds}`);
let nowTime = new Date().getTime();
let { hours: nowHours, minutes: nowMinutes, seconds: nowSeconds } = getDateTime(nowTime);
console.log(` nowHours${nowHours} nowMinutes${nowMinutes} nowSeconds${nowSeconds}`);
let today = new Date();
let setHours = hours == 0 ? nowHours : 0;
let setMinutes = minutes == 0 ? nowMinutes : 0;
let setSeconds = seconds == 0 ? nowSeconds : 0;
today.setHours(setHours);
today.setMinutes(setMinutes);
today.setSeconds(setSeconds);
let todayTime = today.getTime(); //獲取今天凌晨時間戳
let nextTime = todayTime + time;
while (nextTime <= nowTime) {
// console.log(nextTime)
nextTime = nextTime + time;
}
console.log(`定位到的 nextTime ${today.getTime()} setHours${setHours} setMinutes${setMinutes} setSeconds${setSeconds}`);
console.log("現(xiàn)在的時間是");
console.log(getDateTime(nowTime));
console.log("到下次執(zhí)行任務(wù)的時間戳:" + nextTime);
console.log(getDateTime(nextTime));
let subTime = nextTime - nowTime;
console.log("現(xiàn)在到下次執(zhí)行任務(wù)的毫秒差:" + subTime);
if (subTime >= 0) {
console.log(`等待時間執(zhí)行${subTime}`);
await global.sleep(subTime);
task();
}
setInterval(() => {
task();
}, time);
}
定時任務(wù)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
推薦閱讀更多精彩內(nèi)容
- 功能的實現(xiàn),參考了幾篇文章,在開篇,表示感謝!引用了:Mac中的定時任務(wù)利器:launchctlosx – 如果一...
- 環(huán)境: IDEA版本2017.3.1 x64, JDK1.8, SpringBoot2.1.1 異步任務(wù) 在需要開...
- 環(huán)境: IDEA版本2017.3.1 x64, JDK1異步任務(wù).8, SpringBoot2.1.1 在需要開啟...
- import threadingdef fun_timer():print('hello Timer!')glob...