javascript - 如何使用 Nodejs 中的 Agenda 在未来的某个日期时间运行类似 cron 的作业

标签 javascript node.js cron agenda

我这里有个问题。我如何像 Node 调度程序一样使用议程在未来的某个日期时间运行作业。基于https://www.npmjs.com/package/node-schedule 、node-schedule 有 cron 式的调度方法。因此,我可以更轻松地从输入中提取日期。我已阅读议程文档 https://github.com/rschmukler/agenda#agenda-events ,它说 Agenda 使用 Human Interval 来指定间隔。

Cron

我该怎么做?

最佳答案

如果您有 future 的日期,您可以将其转换为距离今天的数,甚至数,如下所示,然后将其与一起使用议程 cron 作业

function findDaysDifference ( date1, date2 ) {
  //Get 1 day in milliseconds
  var oneDay_ms = 1000 * 60 * 60 * 24;

  // Convert both dates to milliseconds
  var date1_ms = date1.getTime();
  var date2_ms = date2.getTime();

  // Calculate the difference in milliseconds
  var difference_ms = date2_ms - date1_ms;
    
  // Convert back to days and return
  return Math.round(difference_ms/oneDay_ms); 
}

var futureDate = new Date(2018, 0, 1);
var daysFromNow = findDaysDifference(new Date(), futureDate);

console.log(daysFromNow);

然后创建agenda作业并使用上面计算的daysFromNow来安排它,

agenda.define('sayHello', function(job) {
  console.log("Hello!");
});

// Schedule a job to run once at a given time
agenda.schedule(daysFromNow + ' days', 'sayHello');

如果你想安排在未来的某个特定时间,你可以计算如下秒数,

function findSecondsDifference ( date1, date2 ) { 
      var oneSecond_ms = 1000;
  
      // Convert both dates to milliseconds
      var date1_ms = date1.getTime();
      var date2_ms = date2.getTime();

      // Calculate the difference in milliseconds
      var difference_ms = date2_ms - date1_ms;
        
      // Convert back to days and return
      return Math.round(difference_ms/oneSecond_ms); 
    }

    var futureDate = new Date(2018, 0, 1, 16);
    var secsFromNow = findSecondsDifference(new Date(), futureDate);

    console.log(secsFromNow);

然后创建 agenda 作业并使用上面计算的 secsFromNow 来安排它,

agenda.define('sayHello', function(job) {
  console.log("Hello!");
});

// Schedule a job to run once at a given time
agenda.schedule(secsFromNow + ' seconds', 'sayHello');

关于javascript - 如何使用 Nodejs 中的 Agenda 在未来的某个日期时间运行类似 cron 的作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41226352/

相关文章:

php - Cron Job 是执行此任务的好主意吗? PHP

javascript - Python 脚本转换为 Chrome 扩展

javascript - 如何在渲染完成之前在 UIWebView 中阻止 Javascript 警报|确认|提示?

javascript - 如何在 typescript 中输入 promise 的回调?

javascript - 在 Node.js v 8.9.3 上,扩展类上的 Array.concat 方法会删除空值 - 为什么?

node.js - 为嵌套文件夹运行 npm install 的最佳方式?

linux - 如何使用非特权用户在前台运行 cron 守护进程?

php - 复选框的 javascript Jquery 和 php 按钮有问题

javascript - 通过指定结束坐标使用 High 图表在图表顶部绘制一条小垂直线

java - 以编程方式将 cron 作业写入 crontab 文件无法运行