我正在设计一个调度程序并使用 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/