Para comenzar a explicar su formato, primero hay que recordar que una expresión CRON no es otra cosa que una cadena de texto compuesta por 6 ó 7 campos separados por espacios en blanco, los cuales describen los detalles individuales de la tarea programada. Los campos y sus posibles valores son los siguientes:




Los campos tienen un orden concreto a la hora de indicar a que nos estamos refiriendo.

"Segundos"  "Minutos"  "Horas"  "Día del mes"  "Mes"  "Día de la semana"  "Año" (Éste último es opcional y normalmente no se especifica nunca)
 
0 0/5 * * ? SUN-MON   ->   Expresión CRON para programar la ejecución de una tarea cada 5 minutos.

Como dato importante, no se permite tener al mismo tiempo en los campos día del mes y día de la semana un asterisco.
La idea es que solo se ponga en uno de ellos y en el otro se ponga el caracter '?'.
Para no estar pendientes de esto, en el campo día de la semana pondremos siempre una '?' si no especificamos ningún rango o valor concreto.

"Segundos"  "Minutos"  "Horas"  "Día del mes"  "Mes"  "Día de la semana"  "Año" (Este último es opcional y normalmente no se especifica nunca)
Ejemplo Descripción
0 0/5 * ? * ? Se ejecuta cada 5 minutos.
0 15 * ? * ? Se ejecuta en el minuto 15 de cada hora.
0 0 12 ? * WED Se ejecuta cada Miércoles a las 12:00:00.
0 0 15 ? * MON-FRI Se ejecuta a las 15:00:00 de Lunes a Viernes, ambos inclusive.
0 0 15 2 * ? Se ejecuta a las 15:00:00 del día 2 de cada mes.
0 15 15 L * ? Se ejecuta a las 15:15:00 del último día de cada mes.
0 15 15 ? * 6L Se ejecuta a las 15:15:00 del último viernes del mes.
0 20 15 1/5 * ? Se ejecuta a las 15:20:00 cada 5 días a partir del primer dia del mes.
10 0/5 * ? * ? Se ejecuta cada 5 minutos, pasados 10 segundos después del minuto (00:00:10 am, 00:05:10 am, etc.)
0 30 10-13 ? * WED,FRI Se ejecuta a las 10:30, 11:30, 12:30, and 13:30, cada Miércoles y Viernes.
0 0/30 8-9 5,20 * ? Se ejecuta cada media hora entre las 8am y las 10am del 5º y 20º día de cada mes. Nótese que no se ejecutará a las 10:00 am, sólo a las 8:00, 8:30, 9:00 y 9:30 .

Campos y Valores Permitidos

CAMPO VALORES PERMITIDOS CARACTERES ESPECIALES OBSERVACIONES
Segundos 0-59

Por ejemplo, si pones “0/15” en el campo de los minutos, significa “cada 15 minutos de la hora, empezando en el minuto 0”. Si usas “3/20” en el campo de los minutos, significaría “cada 20 minutos de la hora, empezando en el minuto 3” – o en otras palabras es lo mismo que especificar “3,23,43” en el campo de los minutos.
Nótese que “/35” no significa “cada 35 minutos” – significa “cada 35 minutos de la hora, empezando en el minuto 0”, en otras palabras, es lo mismo que especificar “0,35”.

Carácter "L"

El carácter “L” se permite para los campos día del mes y día de la semana.
Este carácter es un atajo para “last (último)”, pero tiene un significado diferente en cada uno de los dos campos. Por ejemplo, el valor “L” en el campo día del mes significa “el último día del mes ” - día 31 para Enero, día 28 para Febrero cuando no sea año bisiesto. Si se usa en el campo día de la semana por sí mismo, simplemente significa 7 o “SAT”. Pero usado en el campo día de la semana después de otro valor, significa “el último día xxx del mes” – por ejemplo “6L” ó “FRIL”, ambos significan “el último viernes del mes ”. También puedes especificar un intervalo desde el último día del mes, como “L-3” lo que significaría el tercer día antes del último día del mes. Cuando se usa la opción “L”, es importante no especificar listas, o rangos de valores, puesto que conseguirás resultados confusos o inesperados.

Carácter "W"

El caracter “W” se usa para especificar el día de la semana (de Lunes a Viernes) más cercano al día especificado.

Carácter "#"

El caracter “#” se usa para especificar “el enésimo” XXX día de la semana del mes.
Por ejemplo, el valor “6#3” o “FRI#3” en el campo día de la semana significa “el tercer viernes del mes”.