【问题标题】:Get next cron job timing in node-cron在 node-cron 中获取下一个 cron 作业时间
【发布时间】:2020-10-15 18:13:57
【问题描述】:

在 node-cron 中,我如何获得下一个 cron-job 的时间?例如cronJob.nextCronJob().time 或其他属性。文档中没有显示这一点的方法。

【问题讨论】:

    标签: javascript node.js cron node-modules node-cron


    【解决方案1】:

    我不知道使用node-cron 模块有什么方法可以得到这个。但是,您可以使用 cron 模块执行此操作,使用 cronJob.nextDates() 函数,如下所示:

    const CronJob = require("cron").CronJob;
    
    const cronJob = new CronJob(
        "*/30 * * * * *",
        () => {
            console.log("Timestamp: ", new Date());
        },
        null,
        true
    );
    
    setInterval(() => { 
        console.log("Next job time:", cronJob.nextDates().toISOString());
    }, 5000);
    

    如果你必须使用 node-cron 模块,你可以看看cron-parser,它会解析一个 cron 表达式并给你下一个运行时间,例如

    const parser = require('cron-parser');
    
    const cronExpression = "*/30 * * * * *";
    const interval = parser.parseExpression(cronExpression);
    console.log('Next run:', interval.next().toISOString());
    

    【讨论】:

    • 或者只是cronJob.nextDates().toISOString()。没有参数nextDates() 将返回下一次运行时间。
    • 哦,太好了@Enslev,谢谢,这当然是一个更好的语法。
    • “cron”模块的问题是它不像“node-cron”那样受支持,例如它只能在Linux上运行。
    • 另外,如果我要使用“cronJob.nextDates().toISOString()”,有没有更好的方法来获得“多长时间”直到下一份工作,而不是转换为数字和减去日期.now() 还是别的什么?
    • 我相信它也应该在 Windows 上运行,无论如何它在 Windows 10 上对我有用。我不知道这是否有帮助! nextDates() 调用将返回一个 moment 对象,因此您应该能够调用 .toDate().getTime() 来获取 unix 时间。
    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 2016-02-04
    • 2020-01-04
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 2015-07-29
    相关资源
    最近更新 更多