`
jgsj
  • 浏览: 960736 次
文章分类
社区版块
存档分类
最新评论

根据cron表达式计算最近几次的执行时间

 
阅读更多
使用场景:

使用quartz做为后台任务调度框架,cron表达式设置时间,需要根据cron表达式计算出最近n次的执行具体时间--这个通常在开放给用户修改任务执行时间给出提示时非常有用

解决:

使用quartz的jar包中提供的TriggerUtils类来计算

具体代码:

package com.crazycoder2010.quartz;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.List;

import org.quartz.TriggerUtils;
import org.quartz.impl.triggers.CronTriggerImpl;

public class Main {
    
    /**
    * @param args
    * @throws ParseException 
     * @throws InterruptedException 
     */
    public static void main(String[] args) throws ParseException, InterruptedException {
       CronTriggerImpl cronTriggerImpl = new CronTriggerImpl();
       cronTriggerImpl.setCronExpression("0 0 15 5 * ?");//这里写要准备猜测的cron表达式
       Calendar calendar = Calendar.getInstance();
       Date now = calendar.getTime();
       calendar.add(Calendar.YEAR, 2);//把统计的区间段设置为从现在到2年后的今天(主要是为了方法通用考虑,如那些1个月跑一次的任务,如果时间段设置的较短就不足20条)
       List<Date> dates = TriggerUtils.computeFireTimesBetween(cronTriggerImpl, null, now, calendar.getTime());//这个是重点,一行代码搞定~~
       System.out.println(dates.size());
       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
       for(int i =0;i < dates.size();i ++){
           if(i >19){//这个是提示的日期个数
              break;
           }
           System.out.println(dateFormat.format(dates.get(i)));
       }
    }

}




分享到:
评论

相关推荐

    cron-time:Javascript Cron时间表达式

    用Typescript编写的Cron时间表达式生成器/生成器。 在测试 安装 npm install cron-time-generator 或者 yarn add cron-time-generator 用法 const cronTime = require ( 'cron-time-generator' ) ; // OR ...

    C语言实现了crontab表达式执行时间

    实现思路详见:https://blog.csdn.net/qq_33901011/article/details/100155334 该工程用C语言实现了crontab表达式执行时间,与在线crontab执行时间计算在线工具结果一致,用在嵌入式行业里的设备定时唤醒,定时操作...

    Cronos:功能齐全的.NET库,用于处理Cron表达式。 牢记时区,直观地处理夏时制转换

    Cronos是一个.NET库,用于解析Cron表达式并计算下一次出现。 它是设计时考虑时区,并直观地处理(又名夏令时)转换为* nix中的Cron。 请注意,该库不包含任何任务/作业计划程序,仅适用于Cron表达式。 支持带有可...

    parse-cron:解析cron表达式并计算给定日期之后的下一次出现

    解析crontab语法以确定计划的运行时间 该gem的目标是解析crontab时序规范,并确定何时应运行该作业。 它不是调度程序,它不运行作业。 API示例 cron_parser = CronParser.new('30 * * * *') # Next occurrence ...

    CRON for PHP:计算下一个或上一个运行日期,并确定是否应提交CRON表达式-PHP开发

    PHP Cron表达式解析器PHP cron表达式解析器可以解析CRON表达式,确定是否应运行,计算表达式的下一个运行日期以及计算表达式的上一个运行日期。 您可以使用PHP Cron Expression Parser。注意:该分叉已被弃用,开发...

    quartz 的cron生成器代码

    运行index.htm输入定时任务执行的时间、周期、执行次数、日期等,会自动计算出 quartz执行任务所需表达式

    Python实现定时关机小工具

    将计算得到的关机时间作为任务的执行时间。 关机操作: 在指定的关机时间到达时,执行关机操作。可以使用操作系统提供的命令行命令或API来实现关机操作。 这些步骤简要描述了实现定时关机小工具的一般过程。具体...

    timexe:另一个cron克隆-但是这个克隆更好

    Timexe-类似于Cron的计时器和调度程序,具有毫秒级的分辨率也可以在浏览器中使用特征毫秒解析度改进的cron式语法重新计算长时间运行的计时器,以提高准确性没有依赖关系适用于节点JS和浏览器包含时间表达式包括范围...

    基于SpringBoot+Quartz的轻量级分布式定时任务调度系统源码+项目说明+sql数据库.zip

    - 执行一次:调度过期后,执行一次,并从当前时间开始重新计算下次触发时间; - 放弃执行(默认):调度过期后,忽略过期的任务,从当前时间开始重新计算下次触发时间; - 是否并发执行:单机串行或者并发执行 ...

    Job Plus项目是基于SpringBoot+Vue的轻量级定时任务管理系统+源代码+文档说明

    4. 执行记录:支持通过web页面在线查看调度结果、执行结果、下次执行时间; 5. 实时日志:支持通过web页面实时查看执行器输出的完整的执行日志; 6. 唯一搜索:支持通过web界面根据jobname或jobgroup进行全局唯一...

    PowerJob-其他

    定时策略完善:支持CRON表达式、固定频率、固定延迟和API四种定时调度策略。 执行模式丰富:支持单机、广播、Map、MapReduce四种执行模式,其中Map/MapReduce处理器能使开发者寥寥数行代码便获得集群分布式计算的...

    入门学习Linux常用必会60个命令实例详解doc/txt

    这是因为Linux和许多版本的Unix一样,提供了虚拟控制台的访问方式,允许用户在同一时间从控制台(系统的控制台是与系统直接相连的监视器和键盘)进行多次登录。每个虚拟控制台可以看作是一个独立的工作站,工作台...

    LINUX与UNIX_Shell编程指南(上)

    3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 ...

    Linux与unix shell编程指南(1-16)

    3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 ...

    LINUX 与 UNIX SHELL编程指南

    3.4.2 一次提交几个作业 29 3.5 小结 30 第 4 章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第 5 章 shell 输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 ...

    linux shell 编程教程

    3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 ...

    shell 编程指南pdf

    3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 ...

    LINUX与UNIX SHELL编程指南(很全)

    3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 ...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    3.4.2 一次提交几个作业 29 3.5 小结 30 第4章 文件名置换 31 4.1 使用* 31 4.2 使用? 32 4.3 使用[...]和[!...] 32 4.4 小结 33 第5章 shell输入与输出 34 5.1 echo 34 5.2 read 35 5.3 cat 37 5.4 管道 38 5.5 ...

    MYSQL网络数据库PDF学习资源

    6.8.1 在结果集上执行计算 185 6.8.2 对查询中有疑问的数据进行编码 187 6.8.3 图像数据的处理 188 6.8.4 获取表信息 189 6.8.5 需要避免的客户机程序设计错误 189 第7章 Perl DBI API 192 7.1 Perl 脚本的特点 192 ...

Global site tag (gtag.js) - Google Analytics