Développement

Expressions cron expliquées : 15 planifications réelles et pièges liés aux fuseaux horaires

La syntaxe cron tient sur une seule ligne, mais elle finit toujours par piéger quelqu’un, en général à 2 h du matin la nuit du changement d’heure. Voici le fonctionnement des cinq champs, une série de planifications à copier et les pièges à connaître.

Débutant · 7 min de lecture · Mis à jour le 30 octobre 2026

Expressions cron expliquées : 15 planifications réelles et pièges liés aux fuseaux horaires

Les cinq champs

┌──────── minute (0–59)
│ ┌────── hour (0–23)
│ │ ┌──── day of month (1–31)
│ │ │ ┌── month (1–12)
│ │ │ │ ┌ day of week (0–6, Sunday = 0)
* * * * *

Chaque champ accepte une valeur (5), une liste (1,15), un intervalle (1-5), un pas (*/10) ou * pour toutes les valeurs. Certains systèmes (Quartz, AWS EventBridge) ajoutent un champ pour les secondes ou pour l’année : vérifiez la variante que vous utilisez.

Planifications à copier

ExpressionExécution
*/5 * * * *Toutes les 5 minutes
0 * * * *Toutes les heures, à l’heure pile
15 */2 * * *À la 15e minute, toutes les 2 heures
0 9 * * *Tous les jours à 09:00
30 2 * * *Tous les jours à 02:30 (voir le piège de l’heure d’été ci-dessous)
0 9 * * 1-5Du lundi au vendredi à 09:00
0 18 * * 5Les vendredis à 18:00
0 0 * * 0Les dimanches à minuit
0 0 1 * *Le premier jour de chaque mois
0 0 1 1 *Une fois par an, le 1er janvier
0 8 1,15 * *Le 1er et le 15 à 08:00
*/15 9-17 * * 1-5Toutes les 15 minutes pendant les heures de bureau
0 0 * * 6,0Minuit le week-end
0 3 * 1,4,7,10 *Tous les jours à 03:00, le premier mois de chaque trimestre
0 12 * * *Tous les jours à midi

Construisez ou traduisez n’importe quelle expression en langage courant avec le Générateur d’expressions cron, qui affiche aussi les prochaines exécutions.

Le piège jour du mois / jour de la semaine

Lorsque les champs jour du mois et jour de la semaine sont tous deux restreints, le cron standard s’exécute quand l’un ou l’autre correspond, et non les deux. 0 9 13 * 5 s’exécute le 13 de chaque mois et chaque vendredi, et pas seulement le vendredi 13. Pour exécuter le dernier jour ouvré ou le premier lundi, planifiez une exécution quotidienne et vérifiez la date dans votre script, ou utilisez un planificateur qui prend en charge des extensions comme L et #.

Fuseaux horaires et heure d’été

  • Les serveurs et la CI fonctionnent en UTC. Les planifications de GitHub Actions, la plupart des conteneurs et des planificateurs cloud utilisent l’UTC. 09:00 à New York correspond à 0 14 * * * en hiver et à 0 13 * * * en été. Effectuez la conversion avec le Convertisseur de fuseaux horaires, ou comparez plusieurs fuseaux à la fois sur l’Horloge mondiale.
  • Les tâches programmées entre 01:00 et 03:00 heure locale sont risquées. Au passage à l’heure d’été, 02:30 n’existe pas et la tâche peut être ignorée ; au passage à l’heure d’hiver, elle peut s’exécuter deux fois. Planifiez les tâches critiques en dehors de cette plage, ou faites fonctionner le planificateur en UTC.
  • GitHub Actions peut démarrer les planifications avec plusieurs minutes de retard aux heures de forte charge, et elles sont désactivées sur les dépôts sans activité pendant 60 jours. Générez un workflow avec le Générateur GitHub Actions.

Questions fréquentes

Que signifie */5 dans cron ?
Chaque cinquième valeur de ce champ. Dans le champ des minutes, */5 correspond aux minutes 0, 5, 10 … 55, soit toutes les cinq minutes.
Dimanche vaut-il 0 ou 7 ?
Les deux fonctionnent dans la plupart des implémentations de cron : 0 et 7 désignent le dimanche. Utilisez 0 pour une meilleure portabilité.
Quel fuseau horaire utilise cron ?
Celui de la machine ou du planificateur. Le cron Linux utilise le fuseau horaire du système (CRON_TZ peut le remplacer dans certaines versions) ; GitHub Actions et la plupart des planificateurs cloud utilisent l’UTC.

À lire aussi