2014-10-29 27 views
2

我設計的調度和使用石英庫。我想檢查cron表達式時間是否指未來的時間,否則觸發器根本不會執行。有什麼方法可以比較cron表達式與java中的當前時間。比較cron表達式與當前時間

回答

1

事情要考慮的是一個標準的有效的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。