2012-12-20 55 views
5

我需要創建工作,以便:石英 - 調度作業的時間和星期幾日每兩個星期

  • 開始一個二○一二年十二月二十○日
  • 結束日期= 2017年12月31日
  • 週日和週一每兩週發生一次
  • 下午5點發生火災。

這個cron表達式是否有效?

Date start = 12/20/2012; 
Date endDate = 12/31/2017; 
SimpleTrigger trigger = newTrigger() 
    .withIdentity("trigger3", "group1") 
    .startAt(startDate) 
    .withSchedule(cronSchedule("* * 17 0 0/2 *,SUN,MON").build()) 
    .endAt(endDate) 
    .build; 

請指教。

+1

我覺得* * 17 0 0/2 *,週日,週一 – Mukus

+0

要設置每週日和週一下午5點發生的cron工作將爲0 17 * * 0,1,其中0 =分鐘,17 =小時,* =月中某天,* =月,0,1 =星期日,星期一或星期幾星期天爲0,星期六爲7. 我想不出如何每兩週設置一次。我不認爲可以同時使用月份和星期幾。這可能不是真的。 – Mukus

+0

你能找出這一個嗎?你有沒有使用任何其他工具來實現它? – user2023507

回答

1

我建議你根據你的cron表達式進行單元測試。隨着榮譽給Van de Voorde Toni,你可以將它基於這個代碼,並用它來驗證「nextValidTimeAfter」您的期望相符:

import java.text.ParseException; 
import java.util.Date; 

import org.quartz.CronExpression; 

public class CronTester { 

    public static void main(String[] args) throws ParseException { 
     final String expression = "* * 17 0 0/2 *,SUN,MON"; 
     final CronExpression cronExpression = new CronExpression(expression); 

     final Date nextValidDate1 = cronExpression.getNextValidTimeAfter(new Date()); 
     final Date nextValidDate2 = cronExpression.getNextValidTimeAfter(nextValidDate1); 

     System.out.println(nextValidDate1); 
     System.out.println(nextValidDate2); 

    } 
} 
+0

此cron表達式無效。在cronMaker.com上嘗試一下 –

相關問題