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定时器
最新推荐文章于 2024-07-02 09:25:06 发布