Las expresiones cron son cortas, pero no precisamente fáciles de leer de un vistazo. En vez de buscar en la documentación para saber exactamente cuándo se ejecuta */15 9-17 * * 1-5, pégala aquí y obtén una descripción en lenguaje sencillo junto con las próximas ejecuciones reales.
Sintaxis de los campos
El cron clásico se lee de izquierda a derecha como minuto, hora, día del mes, mes y día de la semana: 5 campos. Esta herramienta también reconoce una forma de 6 campos con un campo de segundos añadido al principio (segundo, minuto, hora, día del mes, mes, día de la semana).
- Minuto: 0-59
- Hora: 0-23
- Día del mes: 1-31
- Mes: 1-12 o JAN-DEC
- Día de la semana: 0-7 (0 y 7 significan domingo) o SUN-SAT
- Segundo (solo en la forma de 6 campos): 0-59
Cada campo admite:
*— cualquier valor («cada minuto», «cada hora»)5— un valor exacto1-5— un rango (de lunes a viernes)*/15— un paso (desde 0, cada 15: 0, 15, 30, 45)1,15,30— una lista separada por comas
También se admiten las macros habituales: @yearly (0 0 1 1 *), @monthly (0 0 1 * *), @weekly (0 0 * * 0), @daily (0 0 * * *) y @hourly (0 * * * *). @reboot no tiene una hora fija, así que no es compatible.
Diferencias entre variantes: Unix cron frente a Quartz frente a planificadores en la nube
«Expresión cron» no significa exactamente la misma sintaxis en todas partes.
- Unix cron (crontab): Los 5 campos clásicos. El día de la semana va de 0 a 7 (0 y 7 significan domingo), y los campos solo admiten valores, rangos, listas y pasos (
*/n). - Quartz (el planificador de Java): 6 o 7 campos, con segundos al principio y un año opcional al final. El día de la semana va de 1 a 7 (1 = domingo) en lugar del 0-7 de Unix cron, y añade símbolos que Unix cron no tiene:
L(último día del mes o de la semana),W(día laborable más cercano),#(por ejemplo,6#3= el tercer viernes) y?(dejar sin especificar el día del mes o el día de la semana). Además, Quartz no permite que día del mes y día de la semana sean*al mismo tiempo. - Planificadores en la nube (AWS EventBridge, Google Cloud Scheduler y similares): En líneas generales parecidos a Unix cron, pero los detalles pueden variar. AWS EventBridge, por ejemplo, sigue el esquema de 6 campos al estilo Quartz (de minutos a un año opcional, sin campo de segundos) y exige un
?en el día del mes o en el día de la semana.
Esta herramienta valida y describe solo la sintaxis estándar de 5 o 6 campos (segundos al principio). Los símbolos propios de Quartz o de un proveedor en la nube (L, W, #, ?, un campo de año, etc.) no son compatibles, así que revisa también la documentación de ese servicio antes de programar algo allí de verdad.
Trampas del horario de verano
Al elegir una zona horaria para calcular las próximas ejecuciones, conviene tener presentes dos cosas sobre los cambios de horario:
- Una hora que falta al adelantar el reloj. El día que se adelanta el reloj, una hora local concreta (a menudo hacia las 2:00) simplemente no existe. La librería de fechas de esta herramienta resuelve esa hora inexistente usando el desfase anterior al cambio.
- Una hora que se repite al atrasar el reloj. El día que se atrasa el reloj, una hora local ocurre dos veces. Esta herramienta la muestra solo una vez, no dos.
Si tienes un trabajo programado entre la 1:00 y las 3:00, merece la pena comprobar sus próximas ejecuciones cerca de las fechas de cambio de horario con esta herramienta.