Saltar al contenido

Explicador de expresiones cronBeta

Convierte una expresión cron en una frase fácil de entender y muestra sus próximas ejecuciones en cualquier zona horaria, con chuleta de sintaxis y macros.

5 campos

Descripción

A las 09:00, de lunes a viernes

Próximas ejecuciones

Zona horaria del navegador: UTC

Introduce una expresión válida para ver sus próximas ejecuciones.

Referencia de campos y chuleta

Referencia de campos y chuleta
CampoSignificadoValores
segundoSegundo (solo con 6 campos)0-59
minutoMinuto0-59
horaHora0-23
día del mesDía del mes1-31
mesMes1-12 o JAN-DEC
día de la semanaDía de la semana0-7 (0 y 7 significan domingo) o SUN-SAT

Los símbolos exclusivos de Quartz (L, W, #, ?) no son compatibles aquí: solo la sintaxis estándar de 5 o 6 campos.

Macros habituales

Ejemplos

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 exacto
  • 1-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:

  1. 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.
  2. 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.

Fuentes

Preguntas frecuentes

¿Cuál es la diferencia entre una expresión de 5 campos y una de 6 (con segundos)?

El cron clásico usa 5 campos: minuto, hora, día del mes, mes y día de la semana. Esta herramienta también acepta una forma de 6 campos con un campo de segundos añadido al principio (por ejemplo, 30 0 9 * * 1-5 significa las 9:00:30 de cada día laborable). Que tu planificador admita realmente segundos depende del sistema, así que revisa la documentación de donde vayas a desplegarlo.

¿Por qué no es compatible @reboot?

@reboot significa «ejecutar una vez al arrancar el sistema», y eso no tiene una hora fija. Como esta herramienta calcula próximas ejecuciones, no puede hacer nada útil con una expresión sin un horario definido, así que @reboot no está en la lista de macros admitidas.

¿Se pueden usar símbolos de Quartz como L, W, # o ? en esta herramienta?

No. Esta herramienta solo procesa la sintaxis estándar de 5 o 6 campos propia de Unix cron. L (último día del mes), W (día laborable más cercano) y # (el enésimo día de la semana del mes) son extensiones propias de Quartz — consulta «Diferencias entre variantes» más abajo.

¿Por qué un trabajo puede ejecutarse a una hora inesperada cerca del cambio de horario?

El día que los relojes se adelantan, una hora local (a menudo cerca de las 2:00) directamente no existe; el día que se atrasan, una hora local ocurre dos veces. La librería de fechas que usa esta herramienta calcula la hora inexistente con el desfase anterior al cambio y muestra la hora duplicada solo una vez. Si un horario se ejecuta entre la 1:00 y las 3:00 en una zona con horario de verano, conviene revisarlo cerca de las fechas de cambio.

¿En qué zona horaria se muestran las «próximas ejecuciones»?

En la zona horaria que elijas. Por defecto es la que reporta tu navegador, y la página siempre indica cuál está activa. Si el trabajo cron real se ejecuta en un servidor con otra zona horaria, cambia a esa zona para comprobarlo.

Software de código abierto utilizado: cronstrue (MIT), cron-parser (MIT), Luxon (MIT)