安装

  1. $ npm install node-schedule --save

demo

  1. // 每分钟的30秒执行
  2. schedule.scheduleJob('30 * * * * *', function(){
  3. console.log('scheduleCronstyle:' + new Date());
  4. });

用法(通配符代表的含义)

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个占位符从左到右分别代表:秒、分、时、日、月、周几
  1. 每分钟的第30秒触发: '30 * * * * *'
  2. 每小时的130秒触发 '30 1 * * * *'
  3. 每天的凌晨1130秒触发 '30 1 1 * * *'
  4. 每月的11130秒触发 '30 1 1 1 * *'
  5. 2016年的111130秒触发 '30 1 1 1 2016 *'
  6. 每周11130秒触发 '30 1 1 * * 1'
  • 高级用法
  1. //注意:六个值之间使用空格分隔;如某个位置上有多个值可以使用逗号(m,n)分隔;如某个位置值是一个区间可以使用中划线(m-n);如某个位置的时间含有间隔执行可以使用斜线(*/n);如只有五位则默认秒为0,第一位从分钟开始计算。
  2. '0 17 * * 1-5':表示每周一至周五下午五点整执行一次;
  3. '*/5 12,18,21 * * 0,6':表示周六周日的12时、18时和21时,每个小时内每隔5分钟执行一次;
  4. '*/30 * * * * *': 30秒执行一次
  • 或者是用字面量的形式
  1. //dayOfWeek
  2. //month
  3. //dayOfMonth
  4. //hour
  5. //minute
  6. //second
  7. // 每周1,16:11:00 触发
  8. schedule.scheduleJob({hour: 16, minute: 11, dayOfWeek: 1}, function(){
  9. console.log('scheduleObjectLiteralSyntax:' + new Date());
  10. });

取消定时任务

  1. var j = schedule.scheduleJob('* * * * * *', function(){ c j c j
  2. console.log('定时器触发次数:' + counter);
  3. counter++;
  4. });
  5. // 取消定时器
  6. j.cancel();