我正在设计调度程序并使用石英库。我想检查cron表达时间是否指向将来的时间,否则将不会执行触发器。有没有办法比较cron表达时间和当前时间。
答案 0 :(得分:3)
需要考虑的是标准的有效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();
}
}
以下是Quartz CronExpression
API的link。