Une expression cron standard comporte cinq champs séparés par des espaces : minute (0–59), heure (0–23), jour du mois (1–31), mois (1–12) et jour de la semaine (0–6, 0 étant dimanche ; la plupart des implémentations acceptent aussi 7). Chaque champ accepte * pour toute valeur, la virgule pour une liste (1,15), le tiret pour une plage (1-5) et la barre oblique pour un pas (*/10 signifie toutes les 10 unités). Ainsi, 0 9 * * 1-5 correspond à 9 h en semaine, */5 * * * * à toutes les cinq minutes et 0 0 1 * * à minuit le premier de chaque mois. Avec six champs, le premier est interprété comme les secondes, un format courant dans les planificateurs Node.js.
L’outil traduit l’expression en langage clair et liste les cinq prochaines exécutions réelles, pour valider le planning avant déploiement. L’erreur classique consiste à inverser minute et heure : pour lancer une tâche chaque jour à 2 h 30, il faut 30 2 * * *, et non 2 30 * * * (invalide, l’heure s’arrêtant à 23). Autre piège : les pas repartent de zéro dans leur unité, */45 * * * * s’exécute à la minute 0 et à la minute 45 de chaque heure, l’intervalle n’est donc pas toujours de 45 minutes.
Prudence quand jour du mois et jour de la semaine sont tous deux restreints. Dans le cron standard (Vixie), si aucun des deux n’est *, la tâche s’exécute dès que l’un ou l’autre correspond, pas les deux. 0 0 13 * 5 se déclenche donc chaque 13 du mois et chaque vendredi, pas uniquement le vendredi 13. Les plateformes à syntaxe Quartz (Java et certains services cloud) utilisent sept champs et ? pour « aucune valeur précise », ce qui diffère de la syntaxe Unix utilisée ici.
Les fuseaux horaires sont la première source de bugs de planification. L’outil affiche les prochaines exécutions dans le fuseau de votre navigateur, mais les serveurs, GitHub Actions et de nombreux planificateurs cloud utilisent UTC par défaut. Pour 9 h à Paris en heure d’été (UTC+2), un planificateur en UTC demande 0 7 * * *, et 0 8 * * * en hiver. Vérifiez toujours le fuseau de la plateforme cible.