Java Quartz-每两周在一周中的几天和几段时间安排一次作业

Java Quartz-每两周在一周中的几天和几段时间安排一次作业,java,jakarta-ee,cron,quartz-scheduler,Java,Jakarta Ee,Cron,Quartz Scheduler,我需要创造一个能: 从2012年12月20日开始 截止日期=2017年12月31日 将每两周在周日和周一进行一次 火警于下午五时发生 这个cron表达式有效吗 Date start = 12/20/2012; Date endDate = 12/31/2017; SimpleTrigger trigger = newTrigger() .withIdentity("trigger3", "group1") .startAt(startDate) .withSched

我需要创造一个能:

  • 从2012年12月20日开始
  • 截止日期=2017年12月31日
  • 将每两周在周日和周一进行一次
  • 火警于下午五时发生
这个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;

请告知。

我建议您基于cron表达式进行单元测试。使用kudos to,您可以基于此代码,并使用它验证“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);

    }
}

我认为**17 0 0/2*,SUN,MONTo将cron作业设置为每个周日下午5点,周一为0 17**0,1,其中0=分钟,17=小时,*=月日,*=月,0,1=周日,周一或周日,周日为0,周六为7。我想不出怎样才能每两周就做一次。我认为不能同时使用月日和星期日。那可能不是真的。你能想出这个吗?您是否使用了其他工具来实现它?此cron表达式无效。请在cronMaker.com上试用