2012-12-20 53 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上尝试一下 –

相关问题