Convierta un cron en una lista de próximas ejecuciones
*/20 9-10 * * 1-5, a partir de las 09:05 UTC del 27 de julio de 2026, se ejecuta a las 09:20, 09:40, 10:00 y 10:20. Pegue una expresión cron, un inicio y cuántas ejecuciones quiere, y vea las horas exactas. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Cron
- */20 9-10 * * 1-5
- Cantidad
- 4
- Hora de inicio
- 2026-07-27T09:05:00Z
- Horarios de ejecución
- 2026-07-27T09:20:00Z, 2026-07-27T09:40:00Z, 2026-07-27T10:00:00Z, 2026-07-27T10:20:00Z
Una expresión cron es compacta, pero su sintaxis no siempre resulta fácil de revisar. Esta capacidad transforma una expresión cron estándar de cinco campos en una lista concreta de próximas marcas de tiempo UTC, a partir del instante que usted indique y sin incluirlo. Elija cuántas ejecuciones necesita y recibirá valores ISO 8601 exactos que podrá copiar en pruebas, manuales operativos, incidencias o revisiones de despliegue. Los campos mal formados se rechazan con un error de entrada claro, en lugar de generar un calendario verosímil pero incorrecto.
Transforme la sintaxis cron compacta en fechas comprobables
Una expresión cron de cinco campos describe minutos, horas, días del mes, meses y días de la semana. La notación es eficiente para las máquinas, pero quienes revisan un calendario suelen necesitar fechas reales antes de confiar en él. Indique la expresión, una fecha inicial ISO 8601 UTC exclusiva y una cantidad entre 1 y 100.
El resultado repite la solicitud normalizada y devuelve los siguientes instantes coincidentes como una lista legible de marcas temporales terminadas en Z. El inicio es exclusivo: si corresponde exactamente a las 09:00 y la expresión se ejecuta a las 09:00, el primer resultado será la siguiente coincidencia. Cron tiene resolución de un minuto, por lo que todas las marcas devueltas llevan cero segundos.
Se admiten listas, rangos inclusivos, comodines y pasos positivos en todos los campos. Por ejemplo, */15 en minutos selecciona cuatro momentos por hora, mientras que 9-17/2 selecciona una hora de cada dos dentro de ese rango. Para el domingo puede usar 0 o 7.
Comprenda las reglas de calendario aplicadas al resultado
Todos los cálculos utilizan el calendario gregoriano proléptico y UTC. Exigir una marca terminada en Z evita conversiones ocultas de zona horaria que podrían desplazar una ejecución a otra fecha o durante un cambio de horario estacional. Las duraciones de los meses y los años bisiestos se calculan directamente, incluida la regla de los siglos: los años divisibles por 100 no son bisiestos salvo que también sean divisibles por 400.
La coincidencia del día de la semana sigue el comportamiento cron convencional. Si el día del mes o el día de la semana es un comodín, el campo restringido determina la coincidencia. Si ambos están restringidos, una fecha coincide cuando cualquiera de ellos coincide.
Este detalle importa en expresiones como 0 9 1 * 1: significa las 09:00 del primer día de cada mes y también de cada lunes, no solamente los lunes que caigan en día 1. Las ejecuciones se ordenan cronológicamente y se generan mediante aritmética entera determinista. La misma entrada produce así la misma salida, independientemente del equipo, la zona local, el reloj actual o la configuración regional.
Valide los calendarios antes de llevarlos a producción
Utilice la lista como una prueba de aceptación pequeña y concreta para sus automatizaciones. Una persona responsable del despliegue puede confirmar que una tarea de días laborables no entra en el fin de semana; un operador puede copiar las próximas ventanas de mantenimiento en un manual, y un desarrollador puede convertir las fechas en datos de prueba para un planificador. El analizador rechaza expresiones que no contengan exactamente cinco campos.
También rechaza elementos de lista vacíos, rangos invertidos, pasos nulos o mal formados y números fuera del intervalo permitido. Los rangos aceptados son 0–59 para minutos, 0–23 para horas, 1–31 para días del mes, 1–12 para meses y 0–7 para días de la semana. Esta capacidad no admite nombres de meses o días, campos de segundos o años, macros como @daily ni extensiones específicas de una implementación.
Esas construcciones varían entre motores cron; adivinar su significado en silencio frustraría el propósito de la vista previa.
Qué puede hacer con ella
Revise un calendario de despliegue
Expanda una cadena cron en fechas UTC exactas antes de aprobar una tarea programada en producción.
Prepare un manual de operaciones
Enumere próximos mantenimientos o informes en un formato que pueda copiar directamente en la documentación operativa.
Preguntas frecuentes
¿Qué formato cron se admite?
Cron numérico estándar de cinco campos: minuto, hora, día del mes, mes y día de la semana. Admite comodines, listas, rangos y pasos positivos.
¿Se incluye el instante inicial?
No. El inicio es exclusivo: se omite una ejecución exactamente igual y se devuelve la siguiente coincidencia.
¿Qué zona horaria se utiliza?
Solo UTC. Proporcione una marca ISO 8601 terminada en Z; todas las marcas devueltas también terminarán en Z.
¿Cómo se combinan el día del mes y el de la semana?
Si ambos están restringidos, basta la coincidencia de uno. Si uno es comodín, el otro controla la selección de fecha.
¿Qué significa */15 en un horario cron?
Significa cada 15 minutos, es decir, cuatro ejecuciones por hora. Los pasos también funcionan sobre intervalos: 9-17/2 en la posición de la hora elige una hora sí y otra no entre las nueve y las diecisiete.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/data/cron-to-readable \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"cron":"*/20 9-10 * * 1-5","count":4,"start_time":"2026-07-27T09:05:00Z"}'const res = await fetch("https://api.kit.forhosting.com/data/cron-to-readable", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"cron": "*/20 9-10 * * 1-5",
"count": 4,
"start_time": "2026-07-27T09:05:00Z"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/cron-to-readable",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"cron": "*/20 9-10 * * 1-5",
"count": 4,
"start_time": "2026-07-27T09:05:00Z"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/cron-to-readable", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"cron":"*/20 9-10 * * 1-5","count":4,"start_time":"2026-07-27T09:05:00Z"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"cron":"*/20 9-10 * * 1-5","count":4,"start_time":"2026-07-27T09:05:00Z"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/cron-to-readable", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"cron": "*/20 9-10 * * 1-5",
"count": 4,
"start_time": "2026-07-27T09:05:00Z"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.cron_to_readable",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_count | 100 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Valide los calendarios antes de llevarlos a producción
La automatización mediante API cuesta $0.002 por solicitud y el algoritmo no utiliza redes ni servicios externos.
Casos de integración
Cree datos de prueba para planificadores
Genere marcas temporales esperadas y estables para pruebas unitarias y de integración sin depender del reloj actual.
Preguntas técnicas
¿Qué ocurre si un campo cron está mal formado?
La solicitud falla con un error invalid_input que identifica el campo mal formado o el rango no válido.
¿Cuánto cuesta una solicitud API?
Cada solicitud API cuesta $0.002. El cálculo determinista no usa red, almacenamiento ni modelos externos.