博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
根据Cron表达式获取近几次任务执行时间
阅读量:6722 次
发布时间:2019-06-25

本文共 2599 字,大约阅读时间需要 8 分钟。

  hot3.png

在使用Quartz进行任务调度时,需要用到Cron表达式,有时候在设置完Cron表达式之后,需要知道此cron表达式对应的最近几次执行的具体时间,我这里提供了一个方法来获取最近几次的运行时间。

package com.declan;import java.text.SimpleDateFormat;import java.util.Date;import org.quartz.CronExpression;import org.quartz.CronScheduleBuilder;import org.quartz.CronTrigger;import org.quartz.TriggerBuilder;/** * 通过Cron表达式获取近5次的执行时间 * @author Declan * */public class GetScheduleTimeOfCron {			public static void main(String[] args) {		System.out.println(getCronSchdule("1 3 8 * * ?"));	}			 /**     * 根据Cron表达式获取任务最近5次的执行时间     * @param cron     * @return     */    public static String getCronSchdule(String cron){		String timeSchdule="";		if(!CronExpression.isValidExpression(cron)){			return "Cron is Illegal!";		}		try {			CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("Caclulate Date").withSchedule(CronScheduleBuilder.cronSchedule(cron)).build();			Date time0 = trigger.getStartTime();			Date time1 = trigger.getFireTimeAfter(time0);			Date time2 = trigger.getFireTimeAfter(time1);			Date time3 = trigger.getFireTimeAfter(time2);			Date time4 = trigger.getFireTimeAfter(time3);			Date time5 = trigger.getFireTimeAfter(time4);			SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");			StringBuilder timeBuilder=new StringBuilder();			timeBuilder			.append(format.format(time1))			.append("\n")			.append(format.format(time2))			.append("\n")			.append(format.format(time3))			.append("\n")			.append(format.format(time4))			.append("\n")			.append(format.format(time5));			timeSchdule=timeBuilder.toString();		} catch (Exception e) {			timeSchdule="unKnow Time!";		}		return timeSchdule;	}  /**     * 根据Cron表达式获取任务最近 几次的执行时间     * @param cron  cron表达式     * @param count 次数     * @return     */    public static List
getCronSchdule(String cron, int count){ List
retList = new ArrayList
(); if(!CronExpression.isValidExpression(cron)){ //Cron表达式不正确 return retList; } try { CronTrigger trigger = TriggerBuilder.newTrigger().withIdentity("Caclulate Date").withSchedule(CronScheduleBuilder.cronSchedule(cron)).build(); SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date startTime = trigger.getStartTime(); for (int i = 0; i < count; i++) { Date time = trigger.getFireTimeAfter(startTime); retList.add(format.format(time )); startTime = time; } } catch (Exception e) { logger.error("", e); } return retList; }}

运行后的结果

2018-04-20 08:03:012018-04-21 08:03:012018-04-22 08:03:012018-04-23 08:03:012018-04-24 08:03:01

 

转载于:https://my.oschina.net/Declan/blog/1797719

你可能感兴趣的文章
红帽5.8 yum小记
查看>>
日历源代码
查看>>
我的友情链接
查看>>
Ascll、GB2312、Ansi
查看>>
ubuntu ftp 服务器搭建
查看>>
2.1、Android Studio通过Lint提升你的代码
查看>>
魔域深渊
查看>>
ffmpeg 去除图片中的水印
查看>>
将博客搬至CSDN
查看>>
Java线程创建形式 Thread构造详解 多线程中篇(五)
查看>>
Hexo博客系列(二)-在多台机器上利用Hexo发布博客
查看>>
C语言参考程序—无符号一位整数的四则运算
查看>>
逻辑电路 - 与门And Gate
查看>>
win server 挂载
查看>>
PSR-2 编码风格规范
查看>>
Linux上Java的安装与配置
查看>>
Laravel使用Carbon人性化显示时间
查看>>
我的友情链接
查看>>
SQL 2008 R2安装部署及端口开放
查看>>
oracle 日期函数总结
查看>>