Pega una expresión cron, como */15 9-18 * * 1-5, o una línea entera de tu crontab, y la herramienta te explica en español cuándo se ejecuta la tarea, campo por campo, y calcula las próximas ejecuciones en la zona horaria que elijas. Avisa de los errores habituales, como un día que no existe o la trampa del día del mes y el de la semana. Todo se calcula en tu navegador.
Los cinco campos de cron
| Campo | Valores | Ejemplo |
|---|---|---|
| Minuto | 0 a 59 | 30: en el minuto 30 |
| Hora | 0 a 23 | 9-18: de 9 a 18 h |
| Día del mes | 1 a 31 | 1,15: los días 1 y 15 |
| Mes | 1 a 12, o jan a dec | */3: enero, abril, julio y octubre |
| Día de la semana | 0 a 7 (0 y 7 son domingo), o sun a sat | 1-5: de lunes a viernes |
En cada campo, * significa «todos»; a-b, un rango; a,b,c, una lista, y /n, «cada n» dentro del rango: */15 en los minutos es 0, 15, 30 y 45. Los nombres de meses y días van en inglés, con sus tres primeras letras. También existen abreviaturas: @hourly, @daily, @weekly, @monthly, @yearly y @reboot, que ejecuta la tarea al arrancar el equipo.
Las trampas más habituales
- El día del mes y el de la semana juntos.
0 0 1 * 1no es «el día 1 si cae en lunes», sino «el día 1 de cada mes y todos los lunes». Cuando los dos campos tienen un valor, cron ejecuta la tarea si se cumple cualquiera de los dos. Si uno de ellos lleva asterisco, como*/2, cron exige que se cumplan los dos. - Días que no existen.
0 0 31 2 *(el 31 de febrero) nunca se ejecuta, y0 0 31 * *se salta los meses de 30 días. Cron no tiene una forma estándar de decir «el último día del mes». - La zona horaria. Cron usa la hora del servidor, que muchas veces está en UTC. Un
0 9 * * *en un servidor en UTC se ejecuta a las 3:00 en la Ciudad de México. Algunas versiones admitenCRON_TZ=America/Mexico_Cityal principio del crontab. - El cambio de horario. En los países que cambian la hora, las tareas programadas en la hora que se salta o en la que se repite pueden no ejecutarse o ejecutarse dos veces, según la versión de cron. La mayor parte de México no cambia la hora desde 2022, pero sí la frontera norte.
- Seis campos no son cron de Linux. Quartz, Spring y AWS añaden un campo de segundos o de año, y usan
?. Esta herramienta trabaja con el formato clásico de 5 campos decrontab.
Calcular las próximas ejecuciones en Python
Una versión sencilla, sin dependencias, que prueba minuto a minuto. Sigue las mismas reglas que la herramienta, también la de los dos campos de día:
from datetime import datetime, timedelta
from zoneinfo import ZoneInfo
MESES = "jan feb mar apr may jun jul aug sep oct nov dec".split()
DIAS = "sun mon tue wed thu fri sat".split()
def campo(texto, minimo, maximo, nombres=(), base=0):
"""Los valores de un campo de cron: «*/15», «1-5», «mon,wed,fri»…"""
def numero(t):
return nombres.index(t) + base if t in nombres else int(t)
valores = set()
for trozo in texto.lower().split(","):
rango, barra, paso = trozo.partition("/")
if rango == "*":
ini, fin = minimo, maximo
else:
a, guion, b = rango.partition("-")
ini = numero(a)
fin = numero(b) if guion else (maximo if barra else ini)
valores.update(range(ini, fin + 1, int(paso or 1)))
return valores
def proximas(expr, n=5, desde=None, zona="America/Mexico_City"):
mi, ho, dm, me, ds = expr.split()
minutos, horas = campo(mi, 0, 59), campo(ho, 0, 23)
dias, meses = campo(dm, 1, 31), campo(me, 1, 12, MESES, 1)
semana = {d % 7 for d in campo(ds, 0, 7 if "*" not in ds else 6, DIAS)} # 7 también es domingo
cualquiera = "*" not in dm and "*" not in ds # con los dos días puestos, basta con uno
tz = ZoneInfo(zona)
t = (desde or datetime.now(tz)).astimezone(tz).replace(second=0, microsecond=0)
resultado = []
for _ in range(60 * 24 * 366 * 5): # como mucho, cinco años
t += timedelta(minutes=1)
sem = (t.weekday() + 1) % 7 # en cron, 0 es domingo
dia = (t.day in dias or sem in semana) if cualquiera else (t.day in dias and sem in semana)
if t.month in meses and dia and t.hour in horas and t.minute in minutos:
resultado.append(t)
if len(resultado) == n:
break
return resultado
desde = datetime(2026, 10, 17, 12, 0, tzinfo=ZoneInfo("America/Mexico_City"))
for t in proximas("*/15 9-18 * * 1-5", 4, desde):
print(t.strftime("%Y-%m-%d %H:%M %Z"))$ python3 cron.py2026-10-19 09:00 CST 2026-10-19 09:15 CST 2026-10-19 09:30 CST 2026-10-19 09:45 CST
Recorrer minuto a minuto es lento para expresiones que se ejecutan una vez al año, pero así se ve claro cómo funciona cron.
Más herramientas para desarrolladores: la calculadora de subredes, el conversor de fecha Unix, el formateador de JSON y el decodificador de JWT. Si estás empezando con la terminal, mira los comandos de Linux que de verdad se usan. Todas las herramientas, en decodigo.com/herramientas.
Formato y reglas: página de manual crontab(5) de cronie, el cron de la mayoría de las distribuciones de Linux. Las próximas ejecuciones se compararon con una búsqueda minuto a minuto independiente en 1,500 expresiones al azar y cinco zonas horarias, incluidos los cambios de horario de Nueva York y Madrid, y con la biblioteca croniter en UTC: coinciden en todas salvo en los casos en que croniter se aparta del manual.