Oh MyUtils

Parser de Expresiones Cron y Constructor - Alternativa a Crontab Guru

Parsea, explica y construye expresiones cron visualmente. Ve próximas ejecuciones, descripciones legibles y valida sintaxis crontab online.

Preguntas Frecuentes

¿Qué es una expresión cron?

Una expresión cron es una cadena compuesta por 5-7 campos que representan un programa para ejecutar tareas. Originalmente utilizada en sistemas tipo Unix para programar tareas cron, esta sintaxis ahora se usa ampliamente en servicios en la nube (AWS, Azure, GCP), pipelines CI/CD y frameworks de aplicaciones. Cada campo especifica cuándo debe ejecutarse la tarea: minuto, hora, día del mes, mes y día de la semana.

¿Cómo uso esta herramienta de análisis cron?

Ingrese su expresión cron en el campo de entrada (por ejemplo, 0 9 * * 1-5). La herramienta analiza instantáneamente y muestra una descripción legible y los próximos tiempos de ejecución programados. Use el menú desplegable de preajustes para programaciones comunes. Cambie a la pestaña Build para crear expresiones visualmente seleccionando valores para cada campo.

¿Están seguros mis datos de expresión cron?

Sí. Sus expresiones cron están 100% seguras y nunca salen de su navegador. Todo el análisis y cálculo se realiza del lado del cliente usando JavaScript. No se transmite ningún dato a ningún servidor, lo que hace que esta herramienta sea segura para cualquier patrón de programación que necesite probar.

¿Cuál es la diferencia entre el formato cron estándar y extendido?

El cron estándar de Unix usa 5 campos: minuto, hora, día del mes, mes y día de la semana. El formato extendido agrega un campo de segundos al principio para un total de 6 campos. Algunos sistemas como Quartz (Java) usan un formato de 7 campos que también incluye el año. Esta herramienta soporta tanto el formato estándar de 5 campos como el extendido de 6 campos.

¿Por qué hay dos campos de día (día del mes y día de la semana)?

Puede especificar uno o ambos. Cuando ambos se especifican con valores que no son comodín, la tarea se ejecuta cuando se cumple CUALQUIERA de las condiciones (no ambas). Por ejemplo, '0 9 15 * 1' significa 'a las 9 AM el día 15 de cada mes O cualquier lunes' — no 'a las 9 AM el día 15 si es lunes'.

¿Cómo creo una expresión cron para 'cada 5 minutos'?

Use */5 * * * *. El /5 significa 'cada 5º valor'. De manera similar, */15 * * * * se ejecuta cada 15 minutos, y 0 */2 * * * se ejecuta cada 2 horas en el minuto 0.

¿Qué zona horaria usa cron?

Por defecto, cron usa la zona horaria local del sistema. En servicios en la nube, a menudo puede especificar una zona horaria. Esta herramienta muestra los próximos tiempos de ejecución en la zona horaria local de su navegador.

Ejemplos de Código

// Simple cron expression parser
function parseCronExpression(expression) {
  const parts = expression.trim().split(/\s+/);
  if (parts.length !== 5) {
    throw new Error('Invalid cron expression: expected 5 fields');
  }

  const [minute, hour, dayOfMonth, month, dayOfWeek] = parts;

  function parseField(field, min, max) {
    if (field === '*') {
      return Array.from({ length: max - min + 1 }, (_, i) => min + i);
    }
    const values = new Set();
    field.split(',').forEach(part => {
      if (part.includes('/')) {
        const [range, step] = part.split('/');
        const stepNum = parseInt(step, 10);
        let start = min, end = max;
        if (range !== '*' && range.includes('-')) {
          [start, end] = range.split('-').map(Number);
        }
        for (let i = start; i <= end; i += stepNum) values.add(i);
      } else if (part.includes('-')) {
        const [start, end] = part.split('-').map(Number);
        for (let i = start; i <= end; i++) values.add(i);
      } else {
        values.add(parseInt(part, 10));
      }
    });
    return Array.from(values).sort((a, b) => a - b);
  }

  return {
    minute: parseField(minute, 0, 59),
    hour: parseField(hour, 0, 23),
    dayOfMonth: parseField(dayOfMonth, 1, 31),
    month: parseField(month, 1, 12),
    dayOfWeek: parseField(dayOfWeek, 0, 6),
  };
}

// Example usage
const expr = '0 9 * * 1-5';
console.log('Parsed:', parseCronExpression(expr));

Herramientas relacionadas