Quartz - 在一周和几天的某一天每两周安排一次工作

时间:2012-12-20 08:43:16

标签: java java-ee cron quartz-scheduler

我需要创建以下的作业:

  • 启动12/20/2012
  • endDate = 12/31/2017
  • 将在周日和周一每两周举行一次
  • 下午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 个答案:

答案 0 :(得分: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);

    }
}