/**
* 生成gron字符串
* @param cycle 调度周期
* @param time 调度时间
*/
getCron(cycle, time) {
let timeArr = [];
if (Array.isArray(time) && cycle !== 'week') {
// 处理day和month
timeArr = time.map(item => item.slice(0, -1));
}
if (cycle === 'week') {
let map = [
'星期日',
'星期一',
'星期二',
'星期三',
'星期四',
'星期五',
'星期六'
];
timeArr = time.map(item => map.indexOf(item) + 1);
}
let cron = [
'0',
'*',
'*',
'?',
'*',
'*'
];
switch (cycle) {
case 'minute':
cron[1] = `/${time}`;
break;
case 'hour':
cron[1] = '0';
cron[2] = `/${time}`;
break;
case 'day':
cron[1] = '0';
cron[2] = `${timeArr.join(',')}`;
break;
case 'week':
// 未指定小时的情况,取0点后的15分钟内随机一个时间,减少服务器压力
cron[1] = `${Math.round(Math.random() * 15)}`;
cron[2] = `0`;
cron[5] = `${timeArr.join(',')}`;
break;
case 'month':
cron[1] = `${Math.round(Math.random() * 15)}`;
cron[2] = `0`;
cron[3] = `${timeArr.join(',')}`;
cron[5] = `?`;
break;
default:
}
return cron.join(' ');
},
解析 cron : "0 /5 * ? * *"成中文时间
parseCron(cron) {
if (cron === null) return;
let RUN_CYCLE = '';
let runCycle=''
let runTime=''
let runTimeMul =''
if (cron[1].includes('/')) {
// 分钟
runCycle = 'minute';
runTime = Number(cron[1].slice(1));
RUN_CYCLE = '分';
}
if (cron[2].includes('/')) {
// 小时
runCycle = 'hour';
runTime = Number(cron[2].slice(1));
RUN_CYCLE = '时';
}
if (cron[2] !== '*' && !cron[2].includes('/') && cron[2] !== '0') {
// 日
runCycle = 'day';
runTimeMul = cron[2].split(',').map(item => item + '点');
RUN_CYCLE = '日';
}
if (cron[5] !== '*' && cron[5] !== '?') {
// 周
let map = [
'星期日',
'星期一',
'星期二',
'星期三',
'星期四',
'星期五',
'星期六'
];
runCycle = 'week';
runTimeMul = cron[5].split(',').map(i => map[i - 1]);
RUN_CYCLE = '分';
}
if (cron[3] !== '*' && cron[3] !== '?') {
// 月
runCycle = 'month';
runTimeMul = cron[3].split(',').map(item => item + '号');
RUN_CYCLE = '分';
}
console.log(runCycle,runTime,runTimeMul,RUN_CYCLE)
return RUN_CYCLE;
},
生成gron字符串 转译cron字符串
猜你喜欢
转载自blog.csdn.net/Embrace924/article/details/84785961
今日推荐
周排行