Cron Expression Parser
Parseer cron-expressies naar leesbare beschrijvingen en bekijk de volgende uitvoertijden
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
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.
Toepassingen van de cron-parser
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.
| Veld | Bereik | Operators | Beschrijving |
|---|---|---|---|
| Minute | 0–59 | * , - / | Minute within the hour |
| Hour | 0–23 | * , - / | Hour of the day (24-hour) |
| Day (month) | 1–31 | * , - / | Day of the month |
| Month | 1–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:
| Teken | Naam | Gedrag |
|---|---|---|
| * | Wildcard | Matches every possible value in the field. * in the minute field means "every minute." |
| , | List | Separates individual values. 1,15 in the day field means "the 1st and 15th." |
| - | Range | Defines an inclusive range. 1-5 in the day-of-week field means "Monday through Friday." |
| / | Step | Defines 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:
| Expressie | Schema |
|---|---|
| * * * * * | Every minute |
| 0 * * * * | Every hour (at minute 0) |
| */15 * * * * | Every 15 minutes |
| 0 9 * * * | Every day at 9:00 AM |
| 0 9 * * 1-5 | Weekdays at 9:00 AM |
| 30 2 * * 0 | Every Sunday at 2:30 AM |
| 0 0 1 * * | First day of every month at midnight |
| 0 0 * * 1 | Every 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-5 | Every hour from 9 AM to 5 PM, weekdays |
Codevoorbeelden
Hoe cron-expressies te verwerken en volgende uitvoertijden te berekenen in populaire talen:
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());
}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)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
}# 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"