使用节点计划在“特定”时间运行

时间:2019-03-29 23:29:14

标签: javascript node-schedule

使用节点计划程序设置重复作业。我每周需要7天,具体时间是几次 -例如5:45 am、06:30am、11:15am等。

我设置了规则:

let rule = new schedule.RecurrenceRule();
rule.dayOfWeek = [1,2,3,4,5,6,7]

现在,如果我将小时和分钟添加为数组,看起来它们将在所有小时中运行所有分钟-例如

rule.hour = [5,6,11];
rule.minute = [45,30,15];

因此,将在5:45 am、6:45am、11:45am、5:30am、6:30am、11:30am等时间运行。

如何使用规则设置准确的时间?再次以我的示例为例:5:45 am、06:30 am、11:15am

2 个答案:

答案 0 :(得分:0)

node-schedule模块似乎支持cron语法。但是,由于您想要的时间表无法用cron表示在单个规则中,因此您也无法在节点时间表中的单个规则中定义它。使用dayOfWeekhourminute定义规则,可以按dayhourminute的每个组合来计划作业,例如cron规则可以。

看看文档中的recurrence rule scheduling部分,如何定义每天特定时间的规则,以及如何为每次需要的时间创建和安排单独的规则

let hour = [5, 6, 11];
let minute = [45, 30, 15];

for (let i = 0; i < hour.length; i++) {
  let rule = new schedule.RecurrenceRule();
  rule.dayOfWeek = [0, 1, 2, 3, 4, 5, 6];
  rule.hour = hour[i];
  rule.minute = minute[i];

  let j = schedule.scheduleJob(rule, function(){
    //your job
  });
}

答案 1 :(得分:0)

另一种方法是使用Object Literal Syntax。如果未按如下所示指定工作日,则每天需要安排时间。

let times = [
  {hour: 5, minute: 45}, 
  {hour: 6, minute: 30}, 
  {hour: 11, minute: 15}
];
times.forEach(function(time) {
  var j = schedule.scheduleJob(time, function() {
    // your job
    console.log('Time for tea!');
  });
})