Viendo en Español Ver en inglés

Explicador de expresiones cron

Pega una expresión cron y obtén una explicación clara en español. Soporta los formatos estándar de 5 campos y de 6 campos (con segundos).

Ejemplos (haz clic para probar)

  1. Escribe o pega una expresión cron en el campo superior.
  2. Lee la explicación en español que aparece debajo.
  3. Haz clic en cualquier ejemplo para pasarlo al campo y ver su decodificación.
  4. Corrige cualquier error de análisis mostrado en rojo y repite hasta que la explicación coincida con tu intención.
¿Qué hace?

El explicador toma una expresión cron Unix estándar (5 campos) o una expresión de estilo Quartz con segundos (6 campos) y devuelve una descripción humana como "A las 09:00, de lunes a viernes". Soporta los operadores habituales — *, ",", -, y / — junto con meses nombrados (JAN-DEC) y días de la semana nombrados (SUN-SAT). El resultado se actualiza con cada pulsación, por lo que puedes iterar rápidamente.

Ejemplo

Un trabajo típico en horario laboral:

0 9 * * MON-FRI

Decodificado:

A las 09:00, de lunes a viernes

Una expresión Quartz de 6 campos más específica con segundos:

0 30 2 ? * MON

Decodificado (cada lunes a las 02:30:00).

Formato cron

┌───────── minuto (0 - 59)
│ ┌─────── hora (0 - 23)
│ │ ┌───── día del mes (1 - 31)
│ │ │ ┌─── mes (1 - 12, o JAN-DEC)
│ │ │ │ ┌─ día de la semana (0 - 6, o SUN-SAT; 0 y 7 significan domingo)
│ │ │ │ │
* * * * *

¿Por qué cron "0 0 * * *" se dispara a medianoche UTC, no a mi hora local?

La mayoría de los problemas reales de cron caen en un puñado de trampas recurrentes:

  • Desfase de zona horaria. 0 0 * * * se dispara a medianoche en la zona horaria del planificador. En Kubernetes CronJob y GitHub Actions eso es UTC por defecto — ajusta spec.timeZone o convierte la hora a UTC manualmente.
  • Confusión 5 campos contra 6 campos. Pegar 0 0 9 * * MON-FRI (6 campos) en un planificador de 5 campos lee el 0 inicial como minuto y el 0 siguiente como hora, por lo que el trabajo se dispara a medianoche, no a las 09:00.
  • Día del mes y día de la semana juntos. 0 0 15 * MON corre cada día 15 y cada lunes — no solo cuando el día 15 cae en lunes. Es la semántica OR de Vixie-cron.
  • step no se reinicia al desplegar. */10 * * * * se dispara en :00, :10, :20, :30, :40, :50 del reloj — no diez minutos después de tu último despliegue.
  • Usar ? en cron estándar. El marcador ? es una extensión de Quartz. Unix cron lo rechaza — usa * en su lugar.
  • Día de la semana 0 contra 7. Ambos significan domingo en cron clásico, pero algunos parsers (BSD antiguo) aceptan solo 0. Si importa la portabilidad, usa SUN.

Operadores

  • * — cualquier valor
  • , — lista de valores (p. ej. MON,WED,FRI)
  • - — rango (p. ej. 1-5)
  • / — valores step (p. ej. */15 = cada 15)
Preguntas frecuentes

¿Cuál es la diferencia entre cron de 5 campos y de 6 campos?

El cron POSIX estándar tiene 5 campos: minuto, hora, día del mes, mes, día de la semana. La variante de 6 campos antepone un campo de segundos y la usan Quartz, Spring @Scheduled y muchas bibliotecas cron de Node. Una expresión de 6 campos como "0 0 9 * * MON-FRI" se dispara a las 9:00:00 los días laborables, mientras que la de 5 campos "0 9 * * MON-FRI" se dispara a las 9:00.

¿Admite extensiones de Quartz como L, W y #?

Este explicador admite el dialecto común Unix / Vixie cron más un campo inicial opcional de segundos. Los tokens exclusivos de Quartz (L para último, W para día laborable, # para día enésimo, y el marcador ?) no forman parte del cron estándar y no se garantiza su análisis. Si dependes de ellos, verifica la expresión en la documentación específica del planificador.

¿Por qué 0 0 * * * se dispara a una hora distinta a la que espero?

Las expresiones cron no tienen zona horaria. El trabajo corre a medianoche en la zona horaria de la máquina o contenedor que ejecuta el planificador. En Kubernetes CronJob, GitHub Actions y AWS EventBridge eso es UTC por defecto. Si quieres medianoche local, fija explícitamente la zona horaria del planificador (spec.timeZone en CronJob, variable TZ, clave timezone en cron.yaml).

¿Puedo combinar día del mes y día de la semana?

En Vixie cron estándar, si día del mes y día de la semana están ambos restringidos, el trabajo se dispara cuando cualquiera coincida — es un OR, no un AND. Por eso "0 0 15 * MON" corre el día 15 de cada mes y cada lunes. Quartz lo invierte y exige que uno de los dos campos sea "?" para desambiguar.

¿Cómo funcionan los valores step?

Un step usa la sintaxis rango/step. "*/15 * * * *" se dispara cada 15 minutos a partir de :00. "10-50/20" en el campo de minutos se dispara a :10, :30, :50. step no significa "cada N desde ahora" — los límites siempre se alinean al inicio del rango, así que step no va a la deriva con la hora actual.

¿Guardan las expresiones cron que pruebo aquí?

No. No conservamos ningún registro de lo que tecleas. Lo que pegues o experimentes se descarta al cerrar o actualizar la página — sin logs, sin analíticas de los horarios con los que trabajas. Puedes comprobarlo en las herramientas de desarrollo de tu navegador si quieres confirmación extra.