Cron laterjs自定义时间段
我正在使用laterjs定义一个自定义时间段,以便在外汇交易时间内运行。但是,我的自定义期间似乎计划在定义的期间之外运行。我尝试在网上搜索示例,但似乎没有太多与此库相关的示例。我也看过nodecon,但cron语法似乎不支持我的要求,即从周一上午X点到周五下午Y点,每小时运行一个任务。以下是我的计划程序代码:Cron laterjs自定义时间段,cron,laterjs,Cron,Laterjs,我正在使用laterjs定义一个自定义时间段,以便在外汇交易时间内运行。但是,我的自定义期间似乎计划在定义的期间之外运行。我尝试在网上搜索示例,但似乎没有太多与此库相关的示例。我也看过nodecon,但cron语法似乎不支持我的要求,即从周一上午X点到周五下午Y点,每小时运行一个任务。以下是我的计划程序代码: later.forexWeek = { name: 'forex trading hours', range: later.h.range * 119, val: functi
later.forexWeek = {
name: 'forex trading hours',
range: later.h.range * 119,
val: function(d) {
return 0;
},
isValid: function(d, val) {
return later.forexWeek.val(d) === val;
},
extent: function(d) { return [0, 1]; },
start: function(d) {
return later.date.next(
later.Y.val(d), later.M.val(d), later.dw.val(1), 21
);
},
end: function(d) {
return later.date.prev(
later.Y.val(d), later.M.val(d), later.dw.val(6), 20
);
},
next: function(d, val) {
return later.date.next(
later.Y.val(d), later.M.val(d), later.D.val(d), later.H.val(d)
);
},
prev: function(d, val) {
return later.date.prev(
later.Y.val(d), later.M.val(d), later.D.val(d), later.H.val(d)
);
}
};
var forexWeek = later.parse.recur().every().hour().on(0).customPeriod('forexWeek');
later.setInterval(function() {
console.log(moment().format());
}, forexWeek);
任何帮助都将不胜感激 您实际上不需要为此类计划编写自定义时间段,
Laterjs
直接支持它。例如,如果你想从周一上午8点到周五下午5点每小时运行一次,你需要通过以下过程来制定时间表
由于在不同的日子有不同的限制,我们需要创建一个复合计划。复合明细表基本上是不同约束集的组合,如果任何约束集有效,则使特定引用有效。在本例中,我们将有三组不同的约束:
1. Once every hour on the hour on Mondays after 8 AM
2. Once every hour on the hour on Tuesdays, Wednesdays, Thursdays
3. Once every hour on the hour on Fridays before and including 5PM
现在我们可以为每一个项目创建适当的时间表。由于Laterjs
计划只是JSON对象,因此我将使用在中定义的约束手动创建计划。同样的时间表也可以使用Recur解析器生成
翻译我们之前定义的时间表:
1. {dw: [2], h_a:[8], m:[0], s:[0]}
2. {dw: [3,4,5], m:[0], s:[0]}
3. {dw: [6], h_b:[18], m:[0], s:[0]}
如果我们取第一个值并将其分解,它特别指出,当星期几(dw)值为2(星期一)、小时值大于或等于(h_a)8、分钟值(m)等于0以及第二个值(s)等于0时,时间应视为有效。满足所有这些约束条件的任何时间都将由该时间表返回。如果我们看几个例子,可能会更清楚
Mon Aug 11 2014 18:00:00 GMT-0700 (Pacific Daylight Time)
- Day of week is 2
- Hour is 18
- Minute is 0
- Second is 0
This is a valid time and would be returned.
Mon Aug 11 2014 7:00:00 GMT-0700 (Pacific Daylight Time)
- Day of week is 2
- Hour is 7
Hour is not valid, this time would not be returned.
另外两个问题也可以用同样的方法来解释。现在我们需要做的就是把它们放在一个综合的时间表中,这个时间表基本上会把它们放在一起,这样一个符合任何时间表的时间都会被认为是有效的
var s = {schedules: [
{dw: [2], h_a:[8], m:[0], s:[0]},
{dw: [3,4,5], m:[0], s:[0]},
{dw: [6], h_b:[18], m:[0], s:[0]}
]};
现在,您可以查找未来(或过去的事件):
later.schedule(s).next(100)