Explicateur d'expressions cron
Lisez une expression cron en langage clair, voyez ses prochaines exécutions dans n'importe quel fuseau horaire et remettez-la sous sa forme standard.
Exemples de code
Copiez ces exemples dans votre propre projet. Chacun n'utilise que la bibliothèque standard du langage : il n'y a rien à installer.
const expand = (field, min, max) =>
field.split(',').flatMap((part) => {
const [range, step = '1'] = part.split('/')
const [from, to = from] = range === '*' ? [min, max] : range.split('-').map(Number)
return Array.from({ length: Math.floor((to - from) / Number(step)) + 1 }, (_, i) => from + i * Number(step))
})
function matches(expression, instant) {
const [minute, hour, dayOfMonth, month, dayOfWeek] = expression.split(' ')
const inMonth = expand(dayOfMonth, 1, 31).includes(instant.getUTCDate())
const inWeek = expand(dayOfWeek, 0, 7).some((day) => day % 7 === instant.getUTCDay())
const dayMatches =
!dayOfMonth.startsWith('*') && !dayOfWeek.startsWith('*') ? inMonth || inWeek : inMonth && inWeek
return (
expand(minute, 0, 59).includes(instant.getUTCMinutes()) &&
expand(hour, 0, 23).includes(instant.getUTCHours()) &&
expand(month, 1, 12).includes(instant.getUTCMonth() + 1) &&
dayMatches
)
}
console.log(matches('*/15 9-17 * * 1-5', new Date('2023-11-14T09:30:00Z')))Ce que fait l’outil
Lisez une expression cron en langage clair, voyez ses prochaines exécutions dans n’importe quel fuseau horaire et remettez-la sous sa forme canonique. L’outil gère le cron standard à cinq champs ainsi que le dialecte Quartz ou Spring avec les secondes. Tout est calculé dans votre navigateur.
Comment l’utiliser
- Saisissez ou collez une expression, comme
*/15 9-17 * * MON-FRI. Les raccourcis comme@dailyet@hourlysont compris. Le champ où se trouve le curseur est mis en évidence et expliqué dessous. - Choisissez le dialecte : Standard (cinq champs) ou Quartz / Spring (six ou sept, en commençant par les secondes).
- Choisissez le fuseau horaire dans lequel lire le planning, et le nombre d’exécutions à venir à lister.
- Lisez la description en toutes lettres au-dessus de la saisie, avec les prochaines heures d’exécution dessous. Les avertissements signalent une syntaxe que tous les cron ne comprennent pas.
- Utilisez Aléatoire ou une puce de planning comme point de départ, ou passez à Plusieurs lignes pour vérifier une expression par ligne.
Exemples
@daily → 0 0 * * *
*/15 9-17 * * MON-FRI → Toutes les 15 minutes, entre 09:00 et 17:59, du lundi au vendredi
Une expression Quartz pour midi le deuxième lundi de chaque mois :
0 0 12 ? * MON#2
À savoir
- Les cinq champs sont la minute, l’heure, le jour du mois, le mois et le jour de la semaine.
- Le cron standard compte le dimanche comme 0. Quartz et Spring le comptent comme 1 et exigent un
?dans le champ jour du mois ou jour de la semaine. - Cron suit l’horloge de la machine ou du planificateur où il tourne : choisissez donc ce fuseau horaire, souvent UTC.
- Les
L,Wet#de Quartz (dernier jour, jour ouvré le plus proche, nième jour de la semaine) sont pris en charge. - Un champ illisible devient rouge, et le message le nomme.
- Avec un jour du mois et un jour de la semaine à la fois, la tâche s’exécute dès que l’un des deux correspond, pas seulement quand les deux correspondent.
@rebootn’a pas de planning à lister, et7pour le dimanche ou les caractères Quartz?,L,Wet#en cron standard sont signalés.
Qu'est-ce qu'une expression cron ?
Une expression cron indique quand une tâche doit s'exécuter, en cinq champs : minute, heure, jour du mois, mois et jour de la semaine. * signifie toutes les valeurs, */15 toutes les 15, 1-5 une plage et 1,15 une liste. Quartz et Spring ajoutent un champ de secondes devant, parfois une année à la fin, et gèrent des extras comme L, W et #.
Questions fréquentes
Quel fuseau horaire utilisent les exécutions ?
Celui que vous choisissez. Cron suit l'horloge de la machine ou du planificateur où il tourne : choisissez ce fuseau, souvent UTC, pour voir les vraies heures.
Quelle différence entre standard et Quartz ?
Le cron standard a cinq champs et compte le dimanche comme 0. Quartz et Spring en ont six ou sept, commencent par les secondes, comptent le dimanche comme 1 et exigent un ? dans le champ jour du mois ou jour de la semaine.
Cet outil envoie-t-il mes expressions quelque part ?
Non. L'explication et les heures d'exécution sont calculées dans votre navigateur. Ce que vous saisissez n'est jamais envoyé à nos serveurs.