2
我設計的調度和使用石英庫。我想檢查cron表達式時間是否指未來的時間,否則觸發器根本不會執行。有什麼方法可以比較cron表達式與java中的當前時間。比較cron表達式與當前時間
我設計的調度和使用石英庫。我想檢查cron表達式時間是否指未來的時間,否則觸發器根本不會執行。有什麼方法可以比較cron表達式與java中的當前時間。比較cron表達式與當前時間
事情要考慮的是一個標準的有效的cron表達式總是指向一個有效的在未來的時間。一個需要注意這是石英的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();
}
}
這裏有一個link到石英CronExpression
API。