java - 将 Cron 表达式与当前时间进行比较

标签 java quartz-scheduler cronexpression

我正在设计一个调度程序并使用 quartz 库。我想检查cron表达式时间是否指的是 future 的时间,否则触发器根本不会被执行。有什么方法可以将 cron 表达式时间与 java 中的当前时间进行比较。

最佳答案

需要考虑的是,标准有效的 cron 表达式将始终引用 future 的有效时间。需要注意的是,Quartz cron 表达式可能包含一个可选的年份字段,它可以是过去也可以是 future 。

要检查表达式的有效性,您可以构建一个 CronExpression 实例,然后向它询问下一个有效的 future 时间; null 表示表达式没有有效的 future 时间。这是一个快速的单元测试示例:

@Test
public void expressionTest() {
    Date date;
    CronExpression exp;
    // Run every 10 minutes and 30 seconds in the year 2002
    String a = "30 */10 * * * ? 2002";      
    // Run every 10 minutes and 30 seconds of any year
    String b = "30 */10 * * * ? *"; 
    try {
        exp = new CronExpression(a);
        date = exp.getNextValidTimeAfter(new Date());
        System.out.println(date);       // null
        exp = new CronExpression(b);
        date = exp.getNextValidTimeAfter(new Date());
        System.out.println(date);       // Tue Nov 04 19:20:30 PST 2014
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

这是一个 link到 Quartz CronExpression API。

关于java - 将 Cron 表达式与当前时间进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26632880/

相关文章:

java - Spark on HBase 异常类未找到(JAVA)

java - 将 JPanel 暴露给外部 jar

java - 如何在 Java 中取消转义 HTML 字符实体?

java - double 时 (x - x) 是否始终为正零,或者有时为负零?

java - Quartz 在 GroupMatcher 中提供正则表达式

java - Quartz架构Q——或多或少的工作

linux - 用于在不同时间以不同时间间隔运行作业的 Cron 表达式

c# - 尝试从另一个类调用 Form 中的方法

cron - 在单个 CRON 语句中指定周一至周六和周日的不同时间

quartz-scheduler - 指定 cron 作业的任意开始和结束时间