【问题标题】:compare Cron Expression with current time将 Cron 表达式与当前时间进行比较
【发布时间】:2014-12-25 07:21:36
【问题描述】:

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

【问题讨论】:

    标签: java quartz-scheduler cronexpression


    【解决方案1】:

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

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

    @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();
        }
    }
    

    这是 Quartz CronExpression API 的 link

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2017-05-04
      • 2011-11-14
      • 1970-01-01
      相关资源
      最近更新 更多