根据corn 表达式 ,获取下一次的执行时间,或者接下来多次的执行时间

2022-08-14 11:01:15 浏览数 (1)

这里写目录标题

  • 1 代码

1 代码

根据一个corn表达式,获取接下来5次的 执行时间

controller 层

代码语言:javascript复制
/**
	 *  获取下次调度时间
	 * @param scheduleType  调度类型   一般是corn
	 * @param scheduleConf   调度具体值   corn 的表达式
	 *
	 */
	@RequestMapping("/nextTriggerTime")
	@ResponseBody
	public ReturnT<List<String>> nextTriggerTime(String scheduleType, String scheduleConf) {


//		创建任务 对象
		XxlJobInfo paramXxlJobInfo = new XxlJobInfo();
		paramXxlJobInfo.setScheduleType(scheduleType);
		paramXxlJobInfo.setScheduleConf(scheduleConf);

		List<String> result = new ArrayList<>();
		try {
//			当前时间
			Date lastTime = new Date();
			for (int i = 0; i < 5; i  ) {
//				从当前时间开始计算,当前任务的下一次  调度时间是多少
				lastTime = JobScheduleHelper.generateNextValidTime(paramXxlJobInfo, lastTime);
				if (lastTime != null) {
//					将计算出来的时间  转为 年月日时分秒  格式
					result.add(DateUtil.formatDateTime(lastTime));
				} else {
					break;
				}
			}
		} catch (Exception e) {
			logger.error(e.getMessage(), e);
			return new ReturnT<List<String>>(ReturnT.FAIL_CODE, (I18nUtil.getString("schedule_type") I18nUtil.getString("system_unvalid"))   e.getMessage());
		}
		return new ReturnT<List<String>>(result);

	}

具体代码

代码语言:javascript复制
  /**
     * 根据任务的调度类型 ,从当前时间的后5秒开始,获取到当前任务下一次调度的时间
     * @param jobInfo
     * @param fromTime
     */
    public static Date generateNextValidTime(XxlJobInfo jobInfo, Date fromTime) throws Exception {

//        查询出当前  任务的调度类型
        ScheduleTypeEnum scheduleTypeEnum = ScheduleTypeEnum.match(jobInfo.getScheduleType(), null);

        if (ScheduleTypeEnum.CRON == scheduleTypeEnum) {
            Date nextValidTime = new CronExpression(jobInfo.getScheduleConf()).getNextValidTimeAfter(fromTime);
            return nextValidTime;
        }

        else if (ScheduleTypeEnum.FIX_RATE == scheduleTypeEnum /*|| ScheduleTypeEnum.FIX_DELAY == scheduleTypeEnum*/) {
            return new Date(fromTime.getTime()   Integer.valueOf(jobInfo.getScheduleConf())*1000 );
        }
        return null;
    }

0 人点赞