从特定日期开始,每 3 个月和 6 个月在 later.js 重复一次
Every 3 and 6 Months Recurrence on later.js stating from a particular date
我正在尝试使用 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 开始。当我在代码中添加 starting On 时
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);
如果您想 运行 独立高效地重复运行,最好使用系统的调度程序,即 Linux 有 crontab
您可以参考 crontab here. Also, you can refer to crontab guru 了解多种模式。示例:
0 9 * 3,6,9,12 * node script.js
这将 运行 你的 script.js 在三月、六月、九月和十二月的 09:00。”
我最初想出了一年中可以有提醒的月份,后来为所需的年数创建了 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);
我正在尝试使用 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 开始。当我在代码中添加 starting On 时
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);
如果您想 运行 独立高效地重复运行,最好使用系统的调度程序,即 Linux 有 crontab 您可以参考 crontab here. Also, you can refer to crontab guru 了解多种模式。示例:
0 9 * 3,6,9,12 * node script.js
这将 运行 你的 script.js 在三月、六月、九月和十二月的 09:00。”
我最初想出了一年中可以有提醒的月份,后来为所需的年数创建了 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);