安装
$ npm install node-schedule --save
demo
// 每分钟的30秒执行
schedule.scheduleJob('30 * * * * *', function(){
console.log('scheduleCronstyle:' + new Date());
});
用法(通配符代表的含义)
1 2 3 4 5 6
┬ ┬ ┬ ┬ ┬ ┬
│ │ │ │ │ |
│ │ │ │ │ └ day of week (0 - 7) (0 or 7 is Sun)
│ │ │ │ └───── month (1 - 12)
│ │ │ └────────── day of month (1 - 31)
│ │ └─────────────── hour (0 - 23)
│ └──────────────────── minute (0 - 59)
└───────────────────────── second (0 - 59, OPTIONAL)
- 6个占位符从左到右分别代表:秒、分、时、日、月、周几
每分钟的第30秒触发: '30 * * * * *'
每小时的1分30秒触发 :'30 1 * * * *'
每天的凌晨1点1分30秒触发 :'30 1 1 * * *'
每月的1日1点1分30秒触发 :'30 1 1 1 * *'
2016年的1月1日1点1分30秒触发 :'30 1 1 1 2016 *'
每周1的1点1分30秒触发 :'30 1 1 * * 1'
- 高级用法
//注意:六个值之间使用空格分隔;如某个位置上有多个值可以使用逗号(m,n)分隔;如某个位置值是一个区间可以使用中划线(m-n);如某个位置的时间含有间隔执行可以使用斜线(*/n);如只有五位则默认秒为0,第一位从分钟开始计算。
'0 17 * * 1-5':表示每周一至周五下午五点整执行一次;
'*/5 12,18,21 * * 0,6':表示周六周日的12时、18时和21时,每个小时内每隔5分钟执行一次;
'*/30 * * * * *': 每30秒执行一次
- 或者是用字面量的形式
//dayOfWeek
//month
//dayOfMonth
//hour
//minute
//second
// 每周1,16:11:00 触发
schedule.scheduleJob({hour: 16, minute: 11, dayOfWeek: 1}, function(){
console.log('scheduleObjectLiteralSyntax:' + new Date());
});
取消定时任务
var j = schedule.scheduleJob('* * * * * *', function(){ c j c j
console.log('定时器触发次数:' + counter);
counter++;
});
// 取消定时器
j.cancel();