如何在 Node 中每天上午 9 点将任务安排到 运行?

How to Schedule a task to run at every day at 9 AM in Node?

我查看了node-schedule

*    *    *    *    *    *
┬    ┬    ┬    ┬    ┬    ┬
│    │    │    │    │    │
│    │    │    │    │    └ 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)

我在每个上午 9 点对 运行 进行了同样的操作,但它每天 运行 不止一次。

let tenSecCron = schedule.scheduleJob('0 0 9 * * *', async () => {
    this.runJobs();
});

我认为正确的 cron 表达式是这样的:

0   0   9   ?   *   *   * 

如果您的调度程序违背了上述表达式,later.js 是获得准确结果的好库。

另一种方法是使用object literal syntax,如下所示:

var j = schedule.scheduleJob({hour: 9, minute: 0} , async () => {
    this.runJobs();
});

除此之外,应该注意 node-schedule 是一个内存调度器,因此它不是基于 cron。因此,调度仅在 node.js 进程为 运行 时才有效。如果重新启动,您可能会遇到奇怪的效果,例如您的作业会立即安排。