首页 > 解决方案 > 如何使用 node-cron node.js 每 21 天运行一次特定功能

问题描述

我正在尝试检查 cron 每 21 天运行一次。我每 21 天只使用提到的 Cron 表达式。有人可以帮我解决这个问题吗?

  try {
    var interval = parser.parseExpression('00 12 12 21 * *');

    console.log('Date: ', interval.next().toString());
    console.log('Date: ', interval.next().toString());
    console.log('Date: ', interval.next().toString());
    console.log('Date: ', interval.next().toString());
    console.log('Date: ', interval.next().toString());
  } catch (err) {
    console.log('Error: ' + err.message);
  }

标签: node.js

解决方案


如果您希望它在每个月的第 21 天的 00:00 运行:(
0 0 21 * *在每月 21 日的 00:00)。

如果您希望它在每月 21 日的 12:00 运行:(
0 12 21 * *在每月 21 日的 12:00)。

如果您希望它每 21 天运行一次,无论是一个月中的哪一天,那么恐怕使用 node-cron 和大多数其他类似的调度系统是不可能的。

在这种特定情况下,您必须自己跟踪天数,并通过在函数运行时将 21 天添加到当前日期来计算它应该运行的第二天。

如果你想玩弄 cron 计划,我推荐crontab.guru

如果您想自己添加 21 天,可以使用 setInterval 安排函数在特定时间运行:

const waitSeconds = 1814400; // 21 days

function scheduledFunction() {
  // Do something
}

// Run now
scheduledFunction();

// Run every 21 days
setInterval(scheduledFunction, waitSeconds);

但是,请记住,内部时钟可能不准确,因此可能会有几秒钟的差异。


推荐阅读