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