Skip to content

定时任务

安装

sh
npm install node-schedule

node-schedule 默认使用服务器本地时间。

警告

node-schedule 对 Cron 表达式的支持较为基础,某些特殊字符(如 LW#)并不支持。此外,node-schedule 并不具备内置的持久化功能。对于需要更复杂调度逻辑和持久化功能的定时任务,还是推荐使用 Quartz

corn表达式

  • 传统的corn表达式有5位,第一位表示分钟

  • 在node-schedule可以使用6位,第一位表示秒。

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └── 星期(0 - 6,0表示星期日)
│    │    │    │    └───── 月份(1 - 12)
│    │    │    └────────── 日(1 - 31)
│    │    └─────────────── 小时(0 - 23)
│    └──────────────────── 分钟(0 - 59)
└───────────────────────── 秒(0 - 59)
ts
* * * * * *  //每秒
0 * * * * * //每分钟
0 0 12 * * * //每天12:00:00
0 30 8 * * 1 //每周一的 08:30:00
0 0 10 1 * * //每月 1日 10:00:00
  • *:表示“任何值”都是允许的
js
* * * * * *  //每秒
  • ,:用来指定多个值,多个值之间用逗号隔开,
js
0 12 * * 1,5 //每周的星期一和星期五的 12:00:00 执行任务。
  • -:指定一个范围
js
0 9-17 * * * * //每小时的第9~17分钟的每分钟的第0s执行任务
  • /:用于指定步长,
js
0 0 12/2 * * * //每天 从 12 点开始,每隔 2 小时 触发一次
0 0 */2 * * * //每天 从 0 点开始,每隔 2 小时 触发一次

使用

使用 Date 对象调度任务

js
const schedule = require('node-schedule');

// 创建一个在指定时间执行的任务
const job = schedule.scheduleJob(new Date(2026, 1, 28, 14, 0, 0), function(){
  console.log('任务在 2026-02-28 14:00 执行');
});

使用 Cron 表达式调度任务

js
const schedule = require('node-schedule');

// 每天中午 12:00 执行
const job = schedule.scheduleJob('0 12 * * *', function(){
  console.log('每天中午 12:00 执行任务');
});