Estoy usando el recurso Quartz CronTrigger para analizar series de formato cron schedule para determinar cuándo debe ejecutarse un trabajo específico. Sin embargo, en realidad no estoy usando Quartz para programar el trabajo.Quartz CronTrigger - Obteniendo el siguiente tiempo de disparo
Hay un método en CronTrigger llamado getFireTimeAfter (Date) que da la próxima vez que el trabajo se activará después de la fecha indicada. Esto funciona bien cuando la fecha suministrada es ahora o en el futuro. Pero no parece funcionar si la fecha está en el pasado.
Date currTime = new Date();
CronTrigger tr = new CronTrigger();
tr.setCronExpression("0 0 23 3,18 * ? *");
Date nextFireAt = tr.getFireTimeAfter(currTime);
System.out.println("Reference time: " + currTime);
System.out.println("Next fire after reference time: " + nextFireAt);
Cuál es un horario de cron para disparar a las 23:00 el 3 y 18 de cada mes. Así, por ejemplo, si hiciera esto hoy (11 de agosto), que veo:
Reference time: Thu Aug 11 10:04:25 MDT 2011
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011
Pero si fijo la fecha de referencia al pasado, me da lo mismo la próxima vez el fuego.
Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Thu Aug 18 23:00:00 MDT 2011
que estaba esperando que la salida sea:
Reference time: Wed Dec 31 17:00:00 MST 1969
Next fire after reference time: Wed Aug 3 23:00:00 MDT 2011
es el método no destinada a funcionar de esa manera o estoy haciendo algo mal?
Gracias!
3 ª AUG está en el pasado. – Kal
@Kal - sí, lo sé. Estoy tratando de averiguar cuándo el disparador se habría disparado después de la fecha indicada, incluso si ya ha pasado. – cambo