import { scheduleJob, RecurrenceRule, Range, cancelJob } from 'node-schedule';
import * as moment from 'moment';
const body = { //假設這是客戶端傳遞的定時參數
// date: 1573470956,
date: moment().unix(),
};
const func = (item: number) => {
const date = moment().unix(); //使用moment獲取當前時間的時間戳
if (!(item >= date)) { //如果設置時間小於當前時間,則爲無效時間
console.log('請正確設置時間!');
return false;
}
//使用moment進行時間轉換和拆分
let format: string | string[] | number[] = moment.unix(date).format('YYYY-MM-DD-HH-mm-ss');
format = format.split('-').map(v => Number(v)); //拆分時間
const rule = new RecurrenceRule();
rule.month = format[1] === 1 ? format[1] = 12 : format[1] - 1; //1-12月 JS中 10是11月
rule.date = format[2]; //1-31號
rule.hour = format[3]; //0-24小時
rule.minute = format[4]; //0-59分
rule.second = [new Range(0, 59)]; //0-59秒 new Range可以指定時間區間段來循環執行,如果只想執行一次,則指定0秒即可
// rule.second = 0;
rule.year = format[0];
const security = '183123-3435-32dfs-34e2w';
const setTIme = scheduleJob(security, rule, v => {
console.log(`執行 ${v}`);
});
setTIme;
if (setTIme && setTIme.name) { //判斷數據和標識是否存在
console.log('第一個定時任務創建成功');
// const result = cancelJob(security); //根據標識刪除
// if (result) {//銷燬該任務
// console.log('第一個銷燬成功');
// } else {
// console.log('第一個銷燬失敗');
// }
} else {
console.log('定時任務創建失敗,請正確設置時間');
}
};
func(body.date); //調用該函數
Nodejs node-schedule定時器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.