timed-silky
Version:
Timed-Silky 是基于一款基于 TypeScript 的定时任务调度器。得益于 TypeScript,Timed-Silky 可以用符合特定句式的自然语言描述任务的调度规则,提供丝滑的链式调用接口。
65 lines (64 loc) • 1.57 kB
JavaScript
class TimePoint {
constructor(hour, minute = 0, second = 0) {
this.hour = 0;
this.minute = 0;
this.second = 0;
this.hour = hour;
this.minute = minute;
this.second = second;
}
static compare(tp1, tp2) {
if (tp1.hour < tp2.hour) {
return -1;
}
else if (tp1.hour > tp2.hour) {
return 1;
}
else if (tp1.minute < tp2.minute) {
return -1;
}
else if (tp1.minute > tp2.minute) {
return 1;
}
else if (tp1.second < tp2.second) {
return -1;
}
else if (tp1.second > tp2.second) {
return 1;
}
else {
return 0;
}
}
// 减法操作,返回tp1和tp2的差值,以秒为单位
static subtract(tp1, tp2) {
return (tp1.hour * 3600 +
tp1.minute * 60 +
tp1.second -
(tp2.hour * 3600 + tp2.minute * 60 + tp2.second));
}
}
const timePointReg = /\d{1,2}:\d{2}(:\d{2})?/;
const day2num = {
sunday: 0,
monday: 1,
tuesday: 2,
wednesday: 3,
thursday: 4,
friday: 5,
saturday: 6,
};
function dayRange(start, end) {
let i = day2num[start];
let j = day2num[end];
let nums = [i, j];
while (true) {
i = ((i + 1) % 7);
if (i == j) {
break;
}
nums.push(i);
}
return nums;
}
export { TimePoint, timePointReg, day2num, dayRange, };