比较Cron Expression和当前时间

vai*_*v.g 3 java quartz-scheduler cronexpression

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

she*_*erb 5

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

要检查表达式的有效性,您可以构建一个CronExpression实例,然后要求其提供下一个有效的未来时间。a 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

这是Quartz API 的链接CronExpression