Saltar al contenido principal

Generador de expresiones cron gratis

Cree, valide y explique expresiones cron para tareas programadas. Descripción en vivo en inglés sencillo, vista previa de las próximas 5 ejecuciones y ajustes preestablecidos de patrones comunes.

Funciona sin conexión una vez cargado
minuto
(0-59)
hora
(0-23)
día
(1-31)
mes
(1-12)
día de la semana
(0-7)

En lenguaje natural

A 09:00, Lunes a viernes.

Patrones comunes

Compatible con cron estándar de Unix, GitHub Actions, Kubernetes CronJob y la mayoría de los sistemas de programación. Usa * para 'cada', */5 para 'cada 5', 1-5 para rangos, 1,15 para valores específicos. También acepta @hourly, @daily, @weekly, @monthly, @yearly, y nombres como MON-FRI o JAN-DEC.

Usos habituales

  • Construye Cron para Flujos de GitHub ActionsGitHub Actions usa sintaxis cron para flujos programados. Construye y verifica tu horario aquí.
  • Construye Cron para CronJobs de KubernetesLos recursos CronJob de Kubernetes usan sintaxis cron estándar. Construye y explica la expresión visualmente.
  • Construye Entradas Cron para crontab de LinuxConstruye expresiones para cron Unix tradicional (cron, crontab -e) con confianza.
  • Programa Trabajos de Mantenimiento de Base de DatosPrograma trabajos de copia de seguridad, vacío o análisis con confianza usando expresiones cron.
  • Aprende Cómo Funcionan las Expresiones CronCada cambio muestra explicación inmediata en inglés simple y vista previa de los próximos 5 ejecuciones — mejor forma de aprender cron.

Cómo funciona

El constructor de expresiones cron se ejecuta enteramente en tu navegador usando un analizador escrito a mano en lib/cron.ts: sin biblioteca externa, sin llamada al servidor. Valida la expresión, ensambla una descripción en lenguaje natural usando las API integradas Intl.DateTimeFormat e Intl.ListFormat del navegador para nombres de días y meses adaptados a la configuración regional, y calcula las próximas ejecuciones programadas avanzando en el tiempo con una lógica de salto de campos en lugar de probar cada minuto por fuerza bruta.

  1. 1
    La expresión se analiza campo por campo
    El analizador divide la expresión en cinco (o seis) campos delimitados por espacios y tokeniza cada uno en busca de comas, rangos (por ejemplo, 1-5), notación de pasos (por ejemplo, */15) y valores con nombre como MON o JAN. Las @macros como @daily se expanden a sus equivalentes de cinco campos antes de empezar el análisis. Los valores no válidos o los números fuera de rango se muestran como claves de error tipadas que se asignan a mensajes localizados.
  2. 2
    Se ensambla una descripción legible por humanos
    describeCron() en lib/cron.ts construye la frase en inglés (o localizada) examinando qué campos son comodines frente a conjuntos explícitos. Los nombres de días y meses se resuelven mediante Intl.DateTimeFormat con la configuración regional activa, y los elementos de la lista se unen usando Intl.ListFormat para que la conjunción ('y' frente a ',' o la forma específica de la configuración regional) coincida con el idioma del usuario.
  3. 3
    Las próximas ejecuciones se calculan con salto de campos
    nextRuns() avanza un objeto Date desde el momento actual, pero se salta meses, días u horas enteros que no pueden coincidir en lugar de probar cada minuto. Esto significa que un horario imposible como el 30 de febrero sale rápidamente mediante una comprobación de horizonte de cinco años en lugar de iterar 2,6 millones de veces.
  4. 4
    La expresión se comparte mediante el fragmento de la URL
    Cualquier expresión que escribas se escribe en el fragmento de URL de la página como #expr= (con un retraso de 500 ms mediante window.history.replaceState). El fragmento nunca se envía a un servidor; la página se hidrata a partir de él al cargar, así que compartir o guardar en marcadores una URL restaura la expresión exacta sin ningún estado en el servidor.

Herramientas relacionadas

Preguntas frecuentes