我认为您可以将 Cron 表达式简化为 0 0 8,15,22,29 * *,只要您希望它在 2 月 8 日、15 日和 22 日运行即可。 (以及每个闰年的第 29 日(我假设你会这样做!))
如果您想完全跳过二月,您可以使用0 0 8,15,22,29 1,3-12 *。我发现 Crontab.guru 对于解析这些表达式非常有用:https://crontab.guru/#0_0_8,15,22,29_1,3-12_*
在任何情况下,您都可以使用非常方便的 nextDates() 函数(这里:cron api)打印出下一个作业将运行 50 次。
const myJob = new CronJob('0 0 8,15,22,29 * *', async () => {
console.log("Cron job running!");
});
// Print the next 50 dates to the console.
console.log(myJob.nextDates(50).map(m => m.format("YYYY-MM-DD HH:mm")));
这看起来像:
[
'2021-05-29 00:00', '2021-06-08 00:00', '2021-06-15 00:00',
'2021-06-22 00:00', '2021-06-29 00:00', '2021-07-08 00:00',
'2021-07-15 00:00', '2021-07-22 00:00', '2021-07-29 00:00',
'2021-08-08 00:00', '2021-08-15 00:00', '2021-08-22 00:00',
'2021-08-29 00:00', '2021-09-08 00:00', '2021-09-15 00:00',
'2021-09-22 00:00', '2021-09-29 00:00', '2021-10-08 00:00',
'2021-10-15 00:00', '2021-10-22 00:00', '2021-10-29 00:00',
'2021-11-08 00:00', '2021-11-15 00:00', '2021-11-22 00:00',
'2021-11-29 00:00', '2021-12-08 00:00', '2021-12-15 00:00',
'2021-12-22 00:00', '2021-12-29 00:00', '2022-01-08 00:00',
'2022-01-15 00:00', '2022-01-22 00:00', '2022-01-29 00:00',
'2022-02-08 00:00', '2022-02-15 00:00', '2022-02-22 00:00',
'2022-03-08 00:00', '2022-03-15 00:00', '2022-03-22 00:00',
'2022-03-29 00:00', '2022-04-08 00:00', '2022-04-15 00:00',
'2022-04-22 00:00', '2022-04-29 00:00', '2022-05-08 00:00',
'2022-05-15 00:00', '2022-05-22 00:00', '2022-05-29 00:00',
'2022-06-08 00:00', '2022-06-15 00:00'
]