生成gron字符串 转译cron字符串


/**
* 生成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;
},

猜你喜欢

转载自blog.csdn.net/Embrace924/article/details/84785961