Node cron,每天午夜运行

30

我希望每天午夜都能运行cron工作。为此,我正在使用

0 0 0 1-31 * * 

但是对我来说它不起作用。 我正在使用node cron。请建议有效的格式。


1
使用1-31作为日期字段的值等同于*。除此之外,您的格式是正确的。如果您编辑问题并包含更多相关代码,我们可以帮助您弄清楚这里发生了什么。 - ttarik
@ev0lution,让我检查一下 0 0 0 * * * 的格式。 - Rajeev
1
所有格式为 00 00 00 * * *0 0 0 * * *0 0 0 1-31 的定时任务都正常工作。问题出在 cron 代码中。 - Rajeev
1
每天如何在上午9:45运行? - Rizwan Patel
6个回答

59

您无需设置所有字段。仅设置前三个字段,它将负责在每天午夜运行。

0 0 0 * * *

1
为什么对这个答案进行了负评?它是100%正确的。 - ttarik

20

这很简单....

以下是每天凌晨12点运行cron job的代码:

var job = new CronJob('0 0 0 * * *', function() {
 //will run every day at 12:00 AM
})

了解更多,请访问https://www.npmjs.com/package/cron


每天上午9:45如何运行代码? - Rizwan Patel
4
很简单,使用这个(45 9 * * *)或者(0 45 9 * * *)。 - Surjeet Bhadauriya
1
@PeeyushKumar,你可以试试这个(45,45 9,21 * * *),这个对你应该有效。 - Surjeet Bhadauriya
@SurjeetBhadauriya 非常感谢您的帮助,但我已经得到了答案。因为时间是从0到23计数,所以您必须使用20代替21。12AM被称为0。 - Peeyush Kumar
@PeeyushKumar 哈哈 :D 对不起,你是对的。应该是 (45,45 9,20 * * *)。 - Surjeet Bhadauriya
显示剩余3条评论

9
你也可以尝试这种格式。
var CronJob=require('cron').CronJob;
var cronJob1 = new CronJob({

    cronTime: '00 00 00 * * * ',
    onTick: function () {
    //Your code that is to be executed on every midnight
    },
    start: true,
    runOnInit: false
});

为了更好地了解cronTime,可以查看以下代码:
cronTime: '00 */3 * * * *' => 每3秒执行一次。
cronTime: '* */1 * * * *' => 没有意义。每秒钟执行一次。
cronTime: '00 */1 * * * *' => 每分钟执行一次。
cronTime: '00 30 11 * * 0-5' => 每个工作日(周一至周五)上午11:30运行。
cronTime: '00 56 17 * * *' => 每天下午5:56执行。

5

4

以下是:

var CronJob = require('cron').CronJob;

var job = new CronJob('00 00 00 * * *', function() {
  /*
   * Runs every day
   * at 00:00:00 AM. 
   */
   // DO SOMETHING
  }, function () {
    /* This function is executed when the job stops */
  },
  true /* Start the job right now */
);

0
如果你在nestjs/schedule中使用cron表达式:
import { CronExpression } from '@nestjs/schedule';

const EVERY_DAY_AT_MIDNIGHT = CronExpression.EVERY_DAY_AT_MIDNIGHT;

EVERY_DAY_AT_MIDNIGHT === "0 0 * * *"; // true;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接