Parseur d'expressions Cron

Analysez les expressions cron en descriptions lisibles et prévisualisez les prochaines exécutions

Essayer un exemple

Expression cron

minute hour day(month) month day(week)

Description lisible

At 9:00 AM, Mon, Tue, Wed, Thu, Fri

Détail des champs

Minute

0

0–59

Hour

9

0–23

Day (month)

*

1–31

Month

*

1–12

Day (week)

1-5

0–6

10 prochaines exécutions planifiées

12026-03-26 09:00:00
22026-03-27 09:00:00
32026-03-30 09:00:00
42026-03-31 09:00:00
52026-04-01 09:00:00
62026-04-02 09:00:00
72026-04-03 09:00:00
82026-04-06 09:00:00
92026-04-07 09:00:00
102026-04-08 09:00:00

Qu'est-ce que l'analyse d'expressions cron ?

Une expression cron est une chaîne de cinq champs séparés par des espaces qui définit une planification récurrente. Ce format est né avec le démon cron Unix, créé par Ken Thompson pour Unix Version 7 en 1979. Chaque champ représente une unité de temps : minute, heure, jour du mois, mois et jour de la semaine. Analyser une expression cron consiste à convertir cette notation compacte en une description lisible et en une liste concrète des prochaines exécutions.

Le format standard à cinq champs est utilisé par crontab sur Linux et macOS, par les plateformes CI/CD comme GitHub Actions et GitLab CI, par les planificateurs cloud d'AWS (EventBridge), Google Cloud Scheduler et Azure Functions, ainsi que par les bibliothèques de planification de tâches dans tous les grands langages de programmation. Certains systèmes étendent le format à six ou sept champs en ajoutant un champ secondes ou un champ année, mais le format à cinq champs défini par POSIX reste la référence commune à toutes les implémentations.

Analyser des expressions cron manuellement est source d'erreurs. L'interaction entre les champs produit des planifications non évidentes : 0 9 1-7 * 1 ne signifie pas « chaque lundi de la première semaine », mais « du 1er au 7 de chaque mois OU n'importe quel lundi ». Un parseur cron élimine cette ambiguïté en développant chaque champ, en appliquant les règles de combinaison, et en produisant les horodatages réels auxquels la tâche se déclenchera.

Pourquoi utiliser ce parseur cron ?

Lire une expression cron comme 30 */6 1,15 * * dans un fichier de configuration et savoir exactement quand elle se déclenche demande un calcul mental sur cinq champs. Ce parseur effectue ce travail instantanément.

Analyse instantanée
Saisissez ou collez une expression cron et obtenez immédiatement la description lisible et les 10 prochaines exécutions planifiées. Pas de bouton de validation, pas de rechargement.
🔒
Traitement respectueux de la vie privée
Toute l'analyse s'exécute localement dans ton navigateur. Tes expressions cron et tes données de planification ne quittent jamais ton appareil.
📋
Détail champ par champ
Chacun des cinq champs est analysé et affiché individuellement, avec les valeurs résolues. Identifie d'un coup d'œil quel champ contrôle la planification.
🔄
Aucun compte requis
Ouvre la page et commence à analyser. Pas de connexion, pas de clé API, pas d'installation. Fonctionne sur tout appareil avec un navigateur moderne.

Cas d'utilisation du parseur cron

Développeur frontend
Vérifie les expressions cron dans les tableaux de bord d'administration et les interfaces de planification avant de les envoyer au backend. Confirme que la planification sélectionnée par l'utilisateur dans un menu déroulant correspond bien à la chaîne cron générée par le formulaire.
Développeur backend
Débogue les tâches planifiées qui se déclenchent à des horaires inattendus. Colle l'expression cron de ta configuration de file de tâches (Celery, Sidekiq, Quartz) et vérifie si les prochaines exécutions correspondent à tes attentes.
DevOps / SRE
Audite les planifications cron dans les pipelines CI/CD, les CronJobs Kubernetes et les configurations de planificateurs cloud. Vérifie que les sauvegardes, les renouvellements de certificats et les scripts de nettoyage sont correctement planifiés avant le déploiement.
Ingénieur QA
Valide que les tâches planifiées en environnement de test correspondent à la planification de production. Détecte les erreurs de décalage d'un dans les champs mois ou jour de la semaine avant qu'elles ne causent des exécutions manquées en prod.
Ingénieur data
Vérifie les déclencheurs cron des pipelines ETL et des tâches de synchronisation de données. Confirme que les fenêtres d'extraction ne se chevauchent pas et que les dépendances en aval disposent d'un délai suffisant.
Étudiant / Apprenant
Apprends la syntaxe cron en expérimentant différentes expressions et en observant les résultats en temps réel. Développe ton intuition sur la façon dont les jokers, les plages et les valeurs de pas interagissent.

Référence de la syntaxe des expressions cron

Une expression cron standard comporte cinq champs séparés par des espaces. Chaque champ accepte des entiers, des jokers, des plages, des listes et des valeurs de pas. Le tableau ci-dessous indique la plage autorisée et les opérateurs pour chaque champ.

ChampPlageOpérateursDescription
Minute0–59* , - /Minute within the hour
Hour0–23* , - /Hour of the day (24-hour)
Day (month)1–31* , - /Day of the month
Month1–12* , - /Month of the year (or JAN–DEC)
Day (week)0–6* , - /Day of the week (0 = Sunday, or SUN–SAT)

Quatre caractères spéciaux contrôlent la façon dont les valeurs sont filtrées dans chaque champ :

CaractèreNomComportement
*WildcardMatches every possible value in the field. * in the minute field means "every minute."
,ListSeparates individual values. 1,15 in the day field means "the 1st and 15th."
-RangeDefines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday."
/StepDefines an interval. */10 in the minute field means "every 10 minutes." 5/15 means "5, 20, 35, 50."

Voici des expressions cron courantes qui couvrent la plupart des besoins de planification :

ExpressionPlanification
* * * * *Every minute
0 * * * *Every hour (at minute 0)
*/15 * * * *Every 15 minutes
0 9 * * *Every day at 9:00 AM
0 9 * * 1-5Weekdays at 9:00 AM
30 2 * * 0Every Sunday at 2:30 AM
0 0 1 * *First day of every month at midnight
0 0 * * 1Every Monday at midnight
0 0 1 1 *January 1st at midnight (yearly)
0 */6 * * *Every 6 hours
5,35 * * * *At minute 5 and 35 of every hour
0 9-17 * * 1-5Every hour from 9 AM to 5 PM, weekdays

Exemples de code

Comment analyser des expressions cron et calculer les prochaines exécutions dans les langages les plus utilisés :

JavaScript (Node.js)
import cronstrue from 'cronstrue';

// Parse cron to human-readable text
cronstrue.toString('0 9 * * 1-5');
// → "At 09:00 AM, Monday through Friday"

cronstrue.toString('*/15 * * * *');
// → "Every 15 minutes"

// Validate with cron-parser and get next run times
import { parseExpression } from 'cron-parser';

const interval = parseExpression('30 2 * * 0');
console.log(interval.next().toISOString());
// → next Sunday at 02:30 UTC

// Iterate over the next 5 runs
for (let i = 0; i < 5; i++) {
  console.log(interval.next().toString());
}
Python
from crontab import CronTab
from croniter import croniter
from datetime import datetime

# Parse and describe a cron expression
cron = CronTab('0 9 * * 1-5')
print(cron.next(default_utc=True))
# → seconds until next run

# Get the next 5 run times with croniter
base = datetime.now()
cron_iter = croniter('0 9 * * 1-5', base)
for _ in range(5):
    print(cron_iter.get_next(datetime))
# → next 5 weekday 09:00 timestamps

# Check if a specific time matches
print(croniter.match('*/15 * * * *', datetime(2026, 3, 25, 10, 30)))
# → True (minute 30 is divisible by 15)
Go
package main

import (
    "fmt"
    "time"
    "github.com/robfig/cron/v3"
)

func main() {
    // Parse a standard 5-field cron expression
    parser := cron.NewParser(cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow)
    schedule, err := parser.Parse("0 9 * * 1-5")
    if err != nil {
        panic(err)
    }

    // Calculate the next 5 run times
    now := time.Now()
    for i := 0; i < 5; i++ {
        now = schedule.Next(now)
        fmt.Println(now)
    }
    // → next 5 weekday 09:00 timestamps
}
Bash (crontab)
# List current user's cron jobs
crontab -l

# Edit cron jobs interactively
crontab -e

# Add a job: run backup.sh every day at 2:30 AM
# (append to crontab via pipe)
(crontab -l 2>/dev/null; echo "30 2 * * * /home/user/backup.sh") | crontab -

# Check syntax with a dry-run parse (requires cronie or busybox)
# The system will reject invalid expressions when saving

# View cron logs on systemd-based Linux
journalctl -u cron --since "1 hour ago"

Questions fréquentes

Quelle est la différence entre les expressions cron à 5 et 6 champs ?
Le format cron standard (POSIX) comporte 5 champs : minute, heure, jour-du-mois, mois, jour-de-la-semaine. Certains outils comme Quartz Scheduler et Spring ajoutent un champ secondes au début, ce qui donne 6 champs. AWS EventBridge utilise 6 champs avec un champ année à la fin. Ce parseur prend en charge le format standard à 5 champs, compatible avec crontab, GitHub Actions, les CronJobs Kubernetes et la plupart des bibliothèques de planification.
Comment cron gère-t-il les champs jour-du-mois et jour-de-la-semaine ensemble ?
Lorsque les deux champs sont restreints (pas *), cron applique une logique OU : la tâche s'exécute dès que l'une des conditions est vraie. Par exemple, 0 9 15 * 1 signifie « à 9 h 00 le 15 de chaque mois OU chaque lundi ». C'est une source fréquente de confusion. Si les deux champs sont *, la tâche s'exécute tous les jours.
Quel fuseau horaire cron utilise-t-il ?
Le crontab traditionnel s'exécute dans le fuseau horaire local du système. Les CronJobs Kubernetes utilisent par défaut le fuseau horaire du kube-controller-manager (généralement UTC) mais supportent un champ optionnel .spec.timeZone depuis Kubernetes 1.25. AWS EventBridge et Google Cloud Scheduler permettent de spécifier le fuseau horaire par planification. Vérifie toujours quel fuseau horaire utilise ton planificateur avant de déployer une tâche cron.
Cron peut-il exécuter une tâche toutes les 30 secondes ?
Le cron standard à 5 champs ne supporte pas la planification sous la minute. L'intervalle minimal est d'une minute (*/1 ou *). Pour exécuter quelque chose toutes les 30 secondes, il faut soit un cron à 6 champs avec un champ secondes (Quartz, Spring), soit un script enveloppant qui attend 30 secondes et recommence, soit un mécanisme de planification différent comme les minuteries systemd avec OnCalendar.
Est-ce que 0 est identique à 7 pour le champ jour-de-la-semaine ?
Dans la plupart des implémentations cron, 0 et 7 représentent tous les deux le dimanche. Cette convention provient du cron Unix originel. Cependant, certains systèmes (Quartz) utilisent 1 pour le dimanche et 7 pour le samedi. POSIX définit la plage comme 0-6 avec 0 = dimanche. Si ton planificateur accepte des noms de jours (SUN, MON), utilise-les pour éviter toute ambiguïté.
Que se passe-t-il si je définis un jour-du-mois qui n'existe pas ?
Si tu planifies une tâche pour le 31 (0 0 31 * *), elle ne s'exécutera pas dans les mois avec moins de 31 jours. Cron ne reporte pas au mois suivant. Février sera toujours ignoré, et avril, juin, septembre et novembre le seront aussi. Pour s'exécuter le dernier jour de chaque mois, certaines implémentations cron supportent le modificateur L (0 0 L * *), mais le cron POSIX standard ne le prend pas en charge.
Comment tester une expression cron avant de la déployer ?
Utilise un parseur en ligne comme celui-ci pour voir les prochaines exécutions et vérifier que la planification correspond à ton intention. Pour la validation en production, la plupart des bibliothèques cron fournissent une fonction de calcul de prochaine exécution : cron-parser en Node.js, croniter en Python, robfig/cron en Go. Exécute l'expression dans l'une de ces bibliothèques dans ta suite de tests pour vérifier les N prochaines exécutions avant le déploiement.