将Cron Expression与当前时间进行比较

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

需要考虑的是标准的有效cron表达式总是指未来的有效时间。 有一点需要注意的是,Quartz cron表达式可能包含一个可选的year字段,可以是过去也是将来。

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

 @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的链接 。