import java.util.Calendar; import java.util.Date; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SimpleTrigger; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory; import org.quartz.jobs.NoOpJob; public class Quartz554Repro { public static void main(String[] args) throws Exception { Scheduler scheduler = new StdSchedulerFactory().getScheduler(); scheduler.start(); Calendar cal = Calendar.getInstance(); Date now = cal.getTime(); cal.add(Calendar.YEAR, -3); Date someTimeAgo = cal.getTime(); JobDetail jd = new JobDetail("jobname", "jobgroup", NoOpJob.class); Trigger trig = new SimpleTrigger("triggername", "triggergroup", SimpleTrigger.REPEAT_INDEFINITELY, 60 * 1000L); scheduler.scheduleJob(jd, trig); Date origNft = trig.getNextFireTime(); trig.setStartTime(someTimeAgo); scheduler.rescheduleJob("triggername", "triggergroup", trig); trig.computeFirstFireTime(scheduler.getCalendar(trig.getCalendarName())); System.out.println(origNft + " / " + trig.getNextFireTime() + " / " + trig.getFireTimeAfter(now)); scheduler.shutdown(); } }