Cron Expression Parser

Parseer cron-expressies naar leesbare beschrijvingen en bekijk de volgende uitvoertijden

Probeer een voorbeeld

Cron-expressie

minute hour day(month) month day(week)

Leesbare beschrijving

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

Veldoverzicht

Minute

0

0–59

Hour

9

0–23

Day (month)

*

1–31

Month

*

1–12

Day (week)

1-5

0–6

Volgende 10 geplande uitvoeringen

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

Wat is het verwerken van cron-expressies?

Een cron-expressie is een reeks van vijf velden gescheiden door spaties die een terugkerend schema definieert. Het formaat is afkomstig van de Unix cron-daemon, voor het eerst geschreven door Ken Thompson voor Version 7 Unix in 1979. Elk veld vertegenwoordigt een tijdseenheid: minuut, uur, dag van de maand, maand en dag van de week. Een cron-expressie verwerken betekent deze compacte notatie omzetten naar een leesbare beschrijving en een concrete lijst van komende uitvoertijden.

Het standaard vijf-velden formaat wordt gebruikt door crontab op Linux en macOS, door CI/CD-platforms zoals GitHub Actions en GitLab CI, door cloud-schedulers in AWS (EventBridge), Google Cloud Scheduler en Azure Functions, en door taakplanningsbibliotheken in alle grote programmeertalen. Sommige systemen breiden het formaat uit naar zes of zeven velden door een secondenveld of een jaarveld toe te voegen, maar de vijf-velden indeling die door POSIX is gedefinieerd blijft de basis die alle implementaties delen.

Cron-expressies handmatig verwerken is foutgevoelig. De wisselwerking tussen velden leidt tot niet voor de hand liggende schema's: 0 9 1-7 * 1 betekent niet 'elke maandag in de eerste week' maar 'de 1e tot en met de 7e van elke maand OF elke maandag.' Een cron-parser elimineert deze dubbelzinnigheid door elk veld uit te breiden, de combinatieregels toe te passen en de werkelijke tijdstempels te produceren waarop de taak wordt uitgevoerd.

Waarom deze cron-parser gebruiken?

Een cron-expressie zoals 30 */6 1,15 * * in een configuratiebestand lezen en precies weten wanneer deze wordt uitgevoerd, vereist hoofdrekenen over vijf velden. Deze parser doet dat werk direct.

Directe verwerking
Typ of plak een cron-expressie en zie onmiddellijk de leesbare beschrijving en de volgende 10 geplande uitvoertijden. Geen verzendknop, geen herlaadpagina.
🔒
Privacy-first verwerking
Alle verwerking vindt lokaal plaats in uw browser. Uw cron-expressies en planningsgegevens verlaten uw apparaat nooit.
📋
Veld-voor-veld overzicht
Elk van de vijf velden wordt afzonderlijk verwerkt en weergegeven met de opgeloste waarden. In één oogopslag zien welk veld het schema bepaalt.
🔄
Geen account vereist
Open de pagina en begin met verwerken. Geen login, geen API-sleutel, geen installatie. Werkt op elk apparaat met een moderne browser.

Toepassingen van de cron-parser

Frontend Developer
Controleer cron-expressies in beheerdersdashboards en plannings-UI's voordat u ze naar de backend stuurt. Bevestig dat het schema dat een gebruiker in een vervolgkeuzelijst heeft geselecteerd overeenkomt met de cron-string die het formulier genereert.
Backend Engineer
Foutopsporing bij geplande taken die op onverwachte tijden worden uitgevoerd. Plak de cron-expressie uit uw taakwachtrij-configuratie (Celery, Sidekiq, Quartz) en controleer of de volgende uitvoertijden overeenkomen met uw verwachtingen.
DevOps / SRE
Controleer cron-schema's in CI/CD-pipelines, Kubernetes CronJobs en cloud-schedulerconfiguraties. Verifieer dat back-uptaken, certificaatvernieuwingen en opruimscripts op het juiste moment zijn gepland voordat u implementeert.
QA Engineer
Valideer dat geplande taken in de testomgeving overeenkomen met het productieschema. Onderschep off-by-one-fouten in maand- of dag-van-de-weekvelden voordat ze gemiste uitvoeringen in productie veroorzaken.
Data Engineer
Controleer de cron-triggers voor ETL-pipelines en datasynchronisatietaken. Bevestig dat extractievensters niet overlappen en dat afhankelijkheden stroomafwaarts voldoende aanlooptijd hebben.
Student / Lerende
Leer cron-syntaxis door te experimenteren met verschillende expressies en de resultaten in real time te bekijken. Ontwikkel intuïtie voor hoe jokertekens, bereiken en stapwaarden op elkaar inwerken.

Syntaxisreferentie voor cron-expressies

Een standaard cron-expressie heeft vijf door spaties gescheiden velden. Elk veld accepteert gehele getallen, jokertekens, bereiken, lijsten en stapwaarden. De tabel hieronder toont het toegestane bereik en de operators voor elk veld.

VeldBereikOperatorsBeschrijving
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 speciale tekens bepalen hoe waarden worden vergeleken binnen elk veld:

TekenNaamGedrag
*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 zijn veelgebruikte cron-expressies die de meeste planningsbehoeften afdekken:

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

Codevoorbeelden

Hoe cron-expressies te verwerken en volgende uitvoertijden te berekenen in populaire talen:

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"

Veelgestelde vragen

Wat is het verschil tussen cron-expressies met 5 en 6 velden?
Het standaard (POSIX) cron-formaat heeft 5 velden: minuut, uur, dag-van-maand, maand, dag-van-week. Sommige tools zoals Quartz Scheduler en Spring voegen aan het begin een secondenveld toe, waardoor het 6 velden worden. AWS EventBridge gebruikt 6 velden met een jaarveld aan het einde. Deze parser ondersteunt het standaard 5-velden formaat, dat compatibel is met crontab, GitHub Actions, Kubernetes CronJobs en de meeste planningsbibliotheken.
Hoe gaat cron om met dag-van-maand en dag-van-week tegelijk?
Wanneer beide velden zijn beperkt (niet *), gebruikt cron OR-logica: de taak wordt uitgevoerd wanneer aan een van de voorwaarden is voldaan. Zo betekent 0 9 15 * 1 'om 09:00 op de 15e van elke maand OF op elke maandag.' Dit is een veelvoorkomende bron van verwarring. Als beide velden op * zijn ingesteld, wordt de taak elke dag uitgevoerd.
Welke tijdzone gebruikt cron?
Traditionele crontab wordt uitgevoerd in de lokale tijdzone van het systeem. Kubernetes CronJobs gebruiken standaard de tijdzone van de kube-controller-manager (meestal UTC), maar ondersteunen een optioneel .spec.timeZone-veld sinds Kubernetes 1.25. AWS EventBridge en Google Cloud Scheduler laten u de tijdzone per schema opgeven. Controleer altijd welke tijdzone uw scheduler gebruikt voordat u een cron-taak implementeert.
Kan cron een taak elke 30 seconden uitvoeren?
Standaard 5-velden cron ondersteunt geen planning onder de minuut. Het kleinste interval is één minuut (*/1 of *). Om iets elke 30 seconden uit te voeren heeft u een 6-velden cron met een secondenveld nodig (Quartz, Spring), een wrapperscript dat 30 seconden wacht en opnieuw wordt uitgevoerd, of een ander planmechanisme zoals systemd-timers met OnCalendar.
Is 0 hetzelfde als 7 voor het dag-van-week-veld?
In de meeste cron-implementaties vertegenwoordigen zowel 0 als 7 zondag. Deze conventie komt van de originele Unix cron. Sommige systemen (Quartz) gebruiken echter 1 voor zondag en 7 voor zaterdag. POSIX definieert het bereik als 0-6 met 0 = zondag. Als uw scheduler benoemde dagen accepteert (SUN, MON), gebruik die dan om dubbelzinnigheid te vermijden.
Wat gebeurt er als ik een dag-van-maand instelt die niet bestaat?
Als u een taak plant voor de 31e (0 0 31 * *), wordt deze niet uitgevoerd in maanden met minder dan 31 dagen. Cron loopt niet over naar de volgende maand. Februari wordt altijd overgeslagen, en ook april, juni, september en november worden overgeslagen. Om op de laatste dag van elke maand uit te voeren ondersteunen sommige cron-implementaties de L-modifier (0 0 L * *), maar standaard POSIX cron doet dat niet.
Hoe test ik een cron-expressie voordat ik deze implementeer?
Gebruik een online parser zoals deze om de volgende uitvoertijden te bekijken en te controleren of het schema overeenkomt met uw bedoeling. Voor validatie in productie bieden de meeste cron-bibliotheken een functie voor het berekenen van de volgende uitvoertijd: cron-parser in Node.js, croniter in Python, robfig/cron in Go. Voer de expressie door een van deze functies in uw testsuite om de volgende N uitvoertijden te bevestigen voordat u implementeert.