Saltar al contenido
CronExplain

Explicador de expresiones cron de Quartz

Quartz Scheduler, la biblioteca de tareas detrás de muchas aplicaciones Java, usa un formato cron más completo que el crontab de Unix. Pega una expresión de Quartz para leerla en lenguaje claro, comprobar sus próximas ejecuciones y convertirla a otros dialectos.

Qué significa

Quartz: segundos primero, año opcional, 1 = domingo. Exactamente un campo de día debe ser «?». Admite L, W y #.

✓ Válida · Qué significa

A las 12:00, de lunes a viernes

Ajustes rápidos

Próximas 10 ejecuciones

#En UTCTu hora local
1——
2——
3——
4——
5——
6——
7——
8——
9——
10——

La misma programación en otros dialectos

  • crontab estándar0 12 * * 1-5
  • AWS EventBridgecron(0 12 ? * MON-FRI *)Las reglas de EventBridge usan UTC.
  • Spring0 0 12 * * MON-FRI

Constructor visual

Elige valores para cada campo. El constructor genera una expresión estándar de cinco campos que se convierte al dialecto seleccionado al usarla.

Minuto
Hora
Día del mes
Mes
Día de la semana
0 9 * * 1-5

Formato cron de Quartz

Una expresión de Quartz tiene seis o siete campos: segundos, minutos, horas, día del mes, mes, día de la semana y un año opcional. Por ejemplo, 0 0 12 ? * MON-FRI se dispara al mediodía los días laborables. Los días de la semana van de 1 (domingo) a 7 (sábado) y se aceptan nombres como MON o FRI, también en rangos.

La regla del signo de interrogación

Quartz no permite restringir a la vez el día del mes y el día de la semana. Exactamente uno de los dos campos debe contener «?», que significa «sin valor específico». Por eso 0 0 12 * * MON no es válido; escribe 0 0 12 ? * MON. El explicador lo señala al instante.

Caracteres especiales L, W y #

L significa «último»: L en el día del mes es el último día del mes, L-3 son tres días antes, y 6L en el día de la semana es el último viernes. W busca el día laborable más cercano a una fecha sin salir del mes, así que 15W se dispara el día laborable más próximo al 15, y LW es el último día laborable del mes. La almohadilla elige el enésimo día de la semana: 6#3 es el tercer viernes.

Quartz en la práctica

En código Java, una expresión de Quartz se asocia a un disparador, por ejemplo TriggerBuilder.newTrigger().withSchedule(CronScheduleBuilder.cronSchedule("0 0 12 ? * MON-FRI").inTimeZone(TimeZone.getTimeZone("Europe/Madrid"))). Sin inTimeZone se usa la zona predeterminada de la JVM. Las instrucciones de misfire deciden qué ocurre si el planificador estaba caído a la hora prevista: dispararse una vez ahora o saltar al siguiente hueco.

Preguntas frecuentes

¿En qué se diferencia el cron de Quartz del de Unix?
Quartz añade un campo de segundos al principio y un año opcional al final, numera los días desde 1 = domingo, exige «?» en un campo de día y admite L, W y #.
¿Puedo convertir una expresión de Quartz a crontab?
Sí, siempre que los segundos sean 0, no haya año y no se usen L, W ni #. El conversor muestra el equivalente en crontab o explica por qué no existe.
¿Qué significa 0 0/5 * * * ?
Se dispara cada cinco minutos, en el segundo 0, empezando en el minuto 0 de cada hora, todos los días.
¿El cron de @Scheduled de Spring es igual que el de Quartz?
Muy parecido, pero Spring numera el domingo como 0 o 7, no tiene campo de año y no exige «?». Usa la página de Spring para expresiones de Spring.