Desarrollo

Expresiones cron explicadas: 15 horarios reales y las trampas de zona horaria

La sintaxis de cron cabe en una línea y, aun así, acaba confundiendo a todo el mundo, normalmente a las 2 de la madrugada la noche en que cambia el horario de verano. Aquí tienes cómo funcionan los cinco campos, una serie de horarios para copiar y las trampas que conviene conocer.

Principiante · 7 min de lectura · Actualizada el 30 de octubre de 2026

Expresiones cron explicadas: 15 horarios reales y las trampas de zona horaria

Los cinco campos

┌──────── minute (0–59)
│ ┌────── hour (0–23)
│ │ ┌──── day of month (1–31)
│ │ │ ┌── month (1–12)
│ │ │ │ ┌ day of week (0–6, Sunday = 0)
* * * * *

Cada campo acepta un valor (5), una lista (1,15), un rango (1-5), un paso (*/10) o * para todos los valores. Algunos sistemas (Quartz, AWS EventBridge) añaden un campo de segundos o de año, así que comprueba qué variante estás usando.

Horarios para copiar

ExpresiónSe ejecuta
*/5 * * * *Cada 5 minutos
0 * * * *Cada hora, en punto
15 */2 * * *A y cuarto cada 2 horas
0 9 * * *Todos los días a las 09:00
30 2 * * *Todos los días a las 02:30 (ver la trampa del horario de verano más abajo)
0 9 * * 1-5De lunes a viernes a las 09:00
0 18 * * 5Los viernes a las 18:00
0 0 * * 0Los domingos a medianoche
0 0 1 * *El primer día de cada mes
0 0 1 1 *Una vez al año, el 1 de enero
0 8 1,15 * *El día 1 y el día 15 a las 08:00
*/15 9-17 * * 1-5Cada 15 minutos en horario de oficina
0 0 * * 6,0Medianoche los fines de semana
0 3 * 1,4,7,10 *Todos los días a las 03:00 en el primer mes de cada trimestre
0 12 * * *Todos los días al mediodía

Puedes crear o traducir cualquier expresión a lenguaje natural con el Generador de expresiones cron, que además muestra las próximas ejecuciones.

La trampa día del mes vs día de la semana

Cuando tanto el campo día del mes como el de día de la semana están restringidos, cron estándar se ejecuta cuando coincide cualquiera de los dos, no ambos. 0 9 13 * 5 se ejecuta el día 13 de cada mes y todos los viernes, no solo el viernes 13. Para ejecutar el último día laborable o el primer lunes, programa la tarea a diario y comprueba la fecha en tu script, o usa un programador con extensiones como L y #.

Zonas horarias y horario de verano

  • Los servidores y el CI funcionan en UTC. Las programaciones de GitHub Actions, la mayoría de contenedores y los programadores en la nube usan UTC. Las 09:00 en Nueva York equivalen a 0 14 * * * en invierno y a 0 13 * * * en verano. Haz la conversión con el Conversor de zonas horarias, o consulta varias zonas a la vez en el Reloj mundial.
  • Los trabajos entre las 01:00 y las 03:00 hora local son arriesgados. Cuando los relojes se adelantan, las 02:30 no existen y el trabajo puede saltarse; cuando se atrasan, puede ejecutarse dos veces. Programa los trabajos críticos fuera de esa franja o ejecuta el programador en UTC.
  • GitHub Actions puede iniciar las programaciones con varios minutos de retraso en horas de mucha carga, y se desactiva en repositorios sin actividad durante 60 días. Genera un workflow con el Generador de GitHub Actions.

Preguntas frecuentes

¿Qué significa */5 en cron?
Cada quinto valor de ese campo. En el campo de minutos, */5 significa los minutos 0, 5, 10… 55, es decir, cada cinco minutos.
¿El domingo es 0 o 7?
En la mayoría de implementaciones de cron funcionan los dos: 0 y 7 significan domingo. Usa 0 para mayor portabilidad.
¿Qué zona horaria usa cron?
La zona horaria de la máquina o del programador. El cron de Linux usa la zona horaria del sistema (CRON_TZ puede sobrescribirla en algunas versiones); GitHub Actions y la mayoría de programadores en la nube usan UTC.

Sigue leyendo