Cron Expression Parser

Analysiert Cron-Ausdrücke in menschenlesbare Beschreibungen und zeigt die nächsten Ausführungszeiten an

Beispiel ausprobieren

Cron-Ausdruck

minute hour day(month) month day(week)

Menschenlesbare Beschreibung

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

Feldaufschlüsselung

Minute

0

0–59

Hour

9

0–23

Day (month)

*

1–31

Month

*

1–12

Day (week)

1-5

0–6

Nächste 10 geplante Ausführungen

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

Was ist das Parsen von Cron-Ausdrücken?

Ein Cron-Ausdruck ist eine Zeichenkette aus fünf leerzeichengetrennten Feldern, die einen wiederkehrenden Zeitplan definiert. Das Format entstammt dem Unix-Cron-Daemon, der erstmals von Ken Thompson für Version 7 Unix im Jahr 1979 entwickelt wurde. Jedes Feld steht für eine Zeiteinheit: Minute, Stunde, Tag des Monats, Monat und Wochentag. Das Parsen eines Cron-Ausdrucks bedeutet, diese kompakte Notation in eine menschenlesbare Beschreibung und eine konkrete Liste bevorstehender Ausführungszeiten umzuwandeln.

Das Standard-Fünf-Felder-Format wird von crontab unter Linux und macOS verwendet, von CI/CD-Plattformen wie GitHub Actions und GitLab CI, von Cloud-Schedulern in AWS (EventBridge), Google Cloud Scheduler und Azure Functions sowie von Job-Scheduling-Bibliotheken in allen wichtigen Programmiersprachen. Einige Systeme erweitern das Format auf sechs oder sieben Felder, indem sie ein Sekunden- oder Jahresfeld hinzufügen, aber das von POSIX definierte Fünf-Felder-Layout bleibt die Grundlage, die alle Implementierungen gemeinsam haben.

Cron-Ausdrücke von Hand zu parsen ist fehleranfällig. Das Zusammenspiel der Felder erzeugt nicht offensichtliche Zeitpläne: 0 9 1-7 * 1 bedeutet nicht „jeden Montag in der ersten Woche“, sondern „vom 1. bis 7. jeden Monats ODER jeden Montag“. Ein Cron-Parser beseitigt diese Mehrdeutigkeit, indem er jedes Feld auswertet, die Kombinationsregeln anwendet und die tatsächlichen Zeitstempel der Jobausführung ermittelt.

Warum diesen Cron Parser verwenden?

Einen Cron-Ausdruck wie 30 */6 1,15 * * aus einer Konfigurationsdatei zu lesen und genau zu wissen, wann er ausgeführt wird, erfordert gedankliche Arithmetik über fünf Felder hinweg. Dieser Parser erledigt diese Arbeit sofort.

Sofortiges Parsen
Gib einen Cron-Ausdruck ein oder füge ihn ein und sieh sofort die menschenlesbare Beschreibung und die nächsten 10 geplanten Ausführungszeiten. Kein Absenden-Button, kein Neuladen.
🔒
Datenschutzfreundliche Verarbeitung
Das gesamte Parsen läuft lokal im Browser. Deine Cron-Ausdrücke und Zeitplandaten verlassen niemals dein Gerät.
📋
Feldweise Aufschlüsselung
Jedes der fünf Felder wird einzeln geparst und angezeigt, mit den aufgelösten Werten. Erkenne auf einen Blick, welches Feld den Zeitplan steuert.
🔄
Kein Konto erforderlich
Seite öffnen und sofort loslegen. Kein Login, kein API-Schlüssel, keine Installation. Funktioniert auf jedem Gerät mit einem modernen Browser.

Anwendungsfälle für den Cron Parser

Frontend-Entwickler
Cron-Ausdrücke in Admin-Dashboards und Planungs-UIs prüfen, bevor sie ans Backend geschickt werden. Bestätigen, dass der vom Nutzer in einem Dropdown gewählte Zeitplan mit dem vom Formular generierten Cron-String übereinstimmt.
Backend-Entwickler
Geplante Jobs debuggen, die zu unerwarteten Zeiten ausgeführt werden. Den Cron-Ausdruck aus der Task-Queue-Konfiguration (Celery, Sidekiq, Quartz) einfügen und prüfen, ob die nächsten Ausführungszeiten den Erwartungen entsprechen.
DevOps / SRE
Cron-Zeitpläne in CI/CD-Pipelines, Kubernetes-CronJobs und Cloud-Scheduler-Konfigurationen prüfen. Sicherstellen, dass Backup-Jobs, Zertifikatserneuerungen und Bereinigungsskripte vor dem Deployment korrekt geplant sind.
QA-Ingenieur
Sicherstellen, dass geplante Tasks in der Testumgebung mit dem Produktionszeitplan übereinstimmen. Fehler um eins im Monats- oder Wochentag-Feld erkennen, bevor sie in der Produktion zu ausgelassenen Ausführungen führen.
Data Engineer
Die Cron-Trigger für ETL-Pipelines und Datensynchronisierungsjobs prüfen. Sicherstellen, dass sich Extraktionsfenster nicht überschneiden und dass nachgelagerte Abhängigkeiten genug Vorlaufzeit haben.
Student / Lernender
Die Cron-Syntax durch Ausprobieren verschiedener Ausdrücke und Beobachten der Ergebnisse in Echtzeit erlernen. Ein Gefühl dafür entwickeln, wie Wildcards, Bereiche und Step-Werte zusammenspielen.

Cron-Ausdrucks-Syntaxreferenz

Ein Standard-Cron-Ausdruck hat fünf leerzeichengetrennte Felder. Jedes Feld akzeptiert Ganzzahlen, Wildcards, Bereiche, Listen und Step-Werte. Die folgende Tabelle zeigt den erlaubten Bereich und die Operatoren für jedes Feld.

FeldBereichOperatorenBeschreibung
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)

Vier Sonderzeichen steuern, wie Werte innerhalb eines Feldes abgeglichen werden:

ZeichenNameVerhalten
*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."

Hier sind häufige Cron-Ausdrücke, die die meisten Planungsanforderungen abdecken:

AusdruckZeitplan
* * * * *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

Code-Beispiele

Cron-Ausdrücke parsen und nächste Ausführungszeiten berechnen in gängigen Sprachen:

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"

Häufig gestellte Fragen

Was ist der Unterschied zwischen 5-Feld- und 6-Feld-Cron-Ausdrücken?
Das Standard-Cron-Format (POSIX) hat 5 Felder: Minute, Stunde, Tag-des-Monats, Monat, Wochentag. Einige Tools wie Quartz Scheduler und Spring fügen am Anfang ein Sekunden-Feld hinzu, wodurch es 6 Felder werden. AWS EventBridge verwendet 6 Felder mit einem Jahres-Feld am Ende. Dieser Parser unterstützt das Standard-5-Feld-Format, das mit crontab, GitHub Actions, Kubernetes-CronJobs und den meisten Scheduling-Bibliotheken kompatibel ist.
Wie verhält sich cron bei gleichzeitiger Angabe von Tag-des-Monats und Wochentag?
Wenn beide Felder eingeschränkt sind (nicht *), verwendet cron ODER-Logik: Der Job läuft, wenn eine der beiden Bedingungen zutrifft. Zum Beispiel bedeutet 0 9 15 * 1 „um 9:00 Uhr am 15. jeden Monats ODER jeden Montag“. Dies ist eine häufige Fehlerquelle. Sind beide Felder auf * gesetzt, läuft der Job jeden Tag.
Welche Zeitzone verwendet cron?
Traditionelles crontab läuft in der lokalen Zeitzone des Systems. Kubernetes-CronJobs verwenden standardmäßig die Zeitzone des kube-controller-managers (meist UTC), unterstützen aber seit Kubernetes 1.25 ein optionales Feld .spec.timeZone. AWS EventBridge und Google Cloud Scheduler erlauben die Angabe einer Zeitzone pro Zeitplan. Überprüfe immer, welche Zeitzone dein Scheduler verwendet, bevor du einen Cron-Job deployst.
Kann cron einen Job alle 30 Sekunden ausführen?
Standard-5-Feld-Cron unterstützt kein Sub-Minuten-Scheduling. Das kleinste Intervall ist eine Minute (*/1 oder *). Um etwas alle 30 Sekunden auszuführen, braucht man entweder 6-Feld-Cron mit einem Sekunden-Feld (Quartz, Spring), ein Wrapper-Skript, das 30 Sekunden wartet und erneut ausgeführt wird, oder einen anderen Scheduling-Mechanismus wie systemd-Timer mit OnCalendar.
Entspricht 0 dem Wert 7 im Wochentag-Feld?
In den meisten cron-Implementierungen repräsentieren sowohl 0 als auch 7 den Sonntag. Diese Konvention stammt vom originalen Unix-Cron. Einige Systeme (Quartz) verwenden jedoch 1 für Sonntag und 7 für Samstag. POSIX definiert den Bereich als 0–6 mit 0 = Sonntag. Wenn dein Scheduler benannte Tage akzeptiert (SUN, MON), verwende diese, um Mehrdeutigkeiten zu vermeiden.
Was passiert, wenn ich einen nicht existierenden Tag-des-Monats angebe?
Wenn ein Job für den 31. geplant ist (0 0 31 * *), wird er in Monaten mit weniger als 31 Tagen nicht ausgeführt. cron überträgt nicht in den nächsten Monat. Februar wird immer übersprungen, ebenso April, Juni, September und November. Um am letzten Tag jeden Monats zu laufen, unterstützen einige cron-Implementierungen den L-Modifikator (0 0 L * *), aber Standard-POSIX-Cron tut dies nicht.
Wie teste ich einen Cron-Ausdruck vor dem Deployment?
Verwende einen Online-Parser wie diesen, um die nächsten Ausführungszeiten zu sehen und zu prüfen, ob der Zeitplan deinen Erwartungen entspricht. Für die Validierung in der Produktion bieten die meisten Cron-Bibliotheken eine Funktion zur Berechnung des nächsten Ausführungszeitpunkts: cron-parser in Node.js, croniter in Python, robfig/cron in Go. Führe den Ausdruck in deiner Test-Suite durch eine dieser Funktionen, um die nächsten N Ausführungszeiten vor dem Deployment zu prüfen.