Cron-Ausdruck-Erklärer
Lies einen Cron-Ausdruck in normaler Sprache, sieh die nächsten Ausführungen in jeder Zeitzone und bringe ihn in die Standardform.
Codebeispiele
Kopieren Sie diese Beispiele in Ihr eigenes Projekt. Sie verwenden nur die Standardbibliothek der Sprache, es muss also nichts installiert werden.
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')))Was es macht
Lies einen Cron-Ausdruck in normaler Sprache, sieh, wann er als Nächstes läuft (in jeder Zeitzone), und bringe ihn in seine kanonische Form. Das Tool versteht Standard-Cron mit fünf Feldern und den Quartz- oder Spring-Dialekt mit Sekunden. Alles wird in deinem Browser berechnet.
So geht’s
- Tippe oder füge einen Ausdruck ein, etwa
*/15 9-17 * * MON-FRI. Kürzel wie@dailyund@hourlywerden verstanden. Das Feld, in dem dein Cursor steht, wird hervorgehoben und darunter erklärt. - Wähle den Dialekt: Standard (5 Felder) oder Quartz / Spring (sechs oder sieben Felder, beginnend mit Sekunden).
- Wähle die Zeitzone, in der der Zeitplan gelesen wird, und wie viele kommende Ausführungen aufgelistet werden.
- Lies die Beschreibung in Worten über dem Eingabefeld, darunter die nächsten Ausführungszeiten. Hinweise zeigen Syntax, die nicht jedes Cron versteht.
- Wähle Zufällig oder einen Zeitplan-Chip als Ausgangspunkt, oder wechsle zu Mehrere Zeilen, um einen Ausdruck pro Zeile zu prüfen.
Beispiele
@daily → 0 0 * * *
*/15 9-17 * * MON-FRI → Alle 15 Minuten, zwischen 09:00 und 17:59 Uhr, von Montag bis Freitag
Ein Quartz-Ausdruck für 12:00 Uhr am zweiten Montag jedes Monats:
0 0 12 ? * MON#2
Gut zu wissen
- Die fünf Felder sind Minute, Stunde, Tag des Monats, Monat und Wochentag.
- Standard-Cron zählt den Sonntag als 0. Quartz und Spring zählen ihn als 1 und brauchen ein
?entweder im Feld für den Tag des Monats oder im Feld für den Wochentag. - Cron läuft nach der Uhr des Rechners oder Schedulers, auf dem es liegt. Wähle daher diese Zeitzone, oft UTC.
- Die Quartz-Zeichen
L,Wund#(letzter Tag, nächster Wochentag, n-ter Wochentag) werden unterstützt. - Ein Feld, das sich nicht lesen lässt, wird rot, und die Meldung nennt es.
- Sind Tag des Monats und Wochentag beide gesetzt, läuft der Job, sobald eines von beiden passt, nicht erst wenn beide passen.
@reboothat keinen Zeitplan zum Auflisten, und7als Sonntag oder die Quartz-Zeichen?,L,Wund#im Standard-Cron werden markiert.
Was ist ein Cron-Ausdruck?
Ein Cron-Ausdruck sagt, wann ein Job laufen soll, in fünf Feldern: Minute, Stunde, Tag des Monats, Monat und Wochentag. * bedeutet jeden Wert, */15 jeden 15., 1-5 einen Bereich und 1,15 eine Liste. Quartz und Spring stellen ein Sekundenfeld voran, hängen manchmal ein Jahr an und kennen Extras wie L, W und #.
Häufige Fragen
Welche Zeitzone nutzen die Ausführungen?
Die, die du wählst. Cron läuft nach der Uhr des Rechners oder Schedulers, auf dem es liegt; wähle diese Zone, oft UTC, um die echten Zeiten zu sehen.
Was unterscheidet Standard von Quartz?
Standard-Cron hat fünf Felder und zählt Sonntag als 0. Quartz und Spring haben sechs oder sieben, beginnen mit Sekunden, zählen Sonntag als 1 und brauchen ein ? im Feld für den Tag des Monats oder den Wochentag.
Sendet dieses Tool meine Ausdrücke irgendwohin?
Nein. Erklärung und Ausführungszeiten werden in deinem Browser berechnet. Was du eingibst, wird nie an unsere Server gesendet.