node.js - 如何使用 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);
}
解决方案
如果您希望它在每个月的第 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);
但是,请记住,内部时钟可能不准确,因此可能会有几秒钟的差异。
推荐阅读
- python - Python。无法根据深度优先搜索的结果构建树(给定每个节点的高度)。不知道回溯时有什么问题
- node.js - 带有猫鼬的 PassportJS 只发送一半的数据
- r - 如何在某些行上添加/删除计算百分比
- r - 在命名列之后选择列
- javascript - 从链接下载文件并检查下载是否完成nodejs
- xml - 从 .xsd 文件创建 xml 文件的用户友好方式 *无需为用户编码*
- javascript - React 中的 App.js 文件是什么?文件太长?
- amazon-web-services - AWS CDK 应用程序如何“引用”已经创建的 aws lambda 函数(而不在堆栈中创建一个新函数)?
- docker - 使用公司签名证书时,Docker nginx 连接被拒绝(端口 80 和 443)
- arrays - 我们是否应该在对数组执行操作之前对数组进行排序?