从特定日期开始的later.js每3个月和6个月重复一次

时间:2018-06-06 12:12:59

标签: javascript node.js laterjs

我试图使用later.js(https://github.com/bunkat/later)每3个月和6个月创建一次复发。

这是我的代码

// My value.scheduled_date is 2018-09-06
var d = new Date(value.scheduled_date);
var day = d.getDate();
// month count will be -1 as it starts from 0
var month = d.getMonth();
var year = d.getFullYear();

var recurSched = later.parse.recur().on(day).dayOfMonth().every(3).month();
var schedules = later.schedule(recurSched).next(5);
console.log(schedules)

这从当前月开始重复发生3个月,但我希望从scheduled_date开始重复。当我在代码

中添加启动时
var recurSched = later.parse.recur().on(day).dayOfMonth().every(3).month().startingOn(month + 1);
var schedules = later.schedule(recurSched).next(5);
console.log(schedules)

每年的那个月之后才会再次出现复发。我希望从特定日期开始重复,以便其他年份的重复不会受到影响。

我的6个月代码

的情况也是如此
var recurSched = later.parse.recur().on(day).dayOfMonth().every(6).month().startingOn(month+1);
var schedules = later.schedule(recurSched).next(5);
console.log(schedules);

2 个答案:

答案 0 :(得分:4)

我最初想出一年中可以提醒的月份,后来又为所需的年份创建了cron。例如;如果我们要在2018年1月1日创建季度提醒,则将在4月,7月,10月和1月重复。上述代码如下所示:

var recurSched = "";
var next_scheduled_date = "";
var next_scheduled_day = "";
var next_scheduled_month = "";
var next_scheduled_year = "";
var list_of_months = [];
for (var i = 1; i <= 2; i++) {
    var next_scheduled_date = new Date(value.scheduled_date);
    next_scheduled_date = new Date(next_scheduled_date.setMonth(next_scheduled_date.getMonth() + parseInt(i*6)));
    var next_scheduled_day = next_scheduled_date.getDate();
    var next_scheduled_month = next_scheduled_date.getMonth();
    var next_scheduled_year = next_scheduled_date.getFullYear();
    list_of_months.push(parseInt(next_scheduled_month + 1))
};
list_of_months.sort(function(a, b){return a - b});

请注意,我们还需要按升序对月份进行排序。递归的代码如下

var recurSched = later.parse.recur().on(list_of_months[0],list_of_months[1]).month().on(day).dayOfMonth();
var schedules = later.schedule(recurSched).next(4);

答案 1 :(得分:1)

如果要独立有效地运行重复功能,请更好地使用系统的调度程序,即Linux具有crontab 您可以在此处参考crontab。此外,您可以参考crontab guru了解多种模式。例如:

0 9 * 3,6,9,12 * node script.js

这将在3月,6月,9月和12月的09:00运行你的script.js。“