Cron Expression Parser

Analyzujte cron výrazy a zobrazte čitelný popis a příštích 10 naplánovaných spuštění

Zkusit příklad

Cron výraz

minute hour day(month) month day(week)

Čitelný popis

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

Rozpis polí

Minute

0

0–59

Hour

9

0–23

Day (month)

*

1–31

Month

*

1–12

Day (week)

1-5

0–6

Příštích 10 naplánovaných spuštění

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

Co je parsování cron výrazů?

Cron výraz je řetězec pěti polí oddělených mezerami, který definuje opakující se plán. Formát vznikl v démonu Unix cron, jejž napsal Ken Thompson pro Version 7 Unix v roce 1979. Každé pole představuje časovou jednotku: minutu, hodinu, den v měsíci, měsíc a den v týdnu. Parsování cron výrazu znamená převod tohoto kompaktního zápisu na čitelný popis a konkrétní seznam nadcházejících časů spuštění.

Standardní formát pěti polí používá crontab na Linux a macOS, platformy CI/CD jako GitHub Actions a GitLab CI, cloudové plánovače v AWS (EventBridge), Google Cloud Scheduler a Azure Functions a knihovny pro plánování úloh ve všech hlavních programovacích jazycích. Některé systémy formát rozšiřují na šest nebo sedm polí přidáním pole pro sekundy nebo rok, ale pětipolicové schéma definované standardem POSIX zůstává základem, který sdílejí všechny implementace.

Parsovat cron výrazy ručně je náchylné k chybám. Vzájemné působení polí vytváří neintuitivní plány: výraz 0 9 1-7 * 1 neznamená 'každé pondělí v prvním týdnu', ale 'od 1. do 7. dne každého měsíce NEBO každé pondělí'. Cron parser tuto nejednoznačnost odstraní tím, že rozloží každé pole, aplikuje pravidla kombinování a vyprodukuje skutečná časová razítka, kdy úloha spustí.

Proč použít tento Cron Parser?

Přečíst cron výraz jako 30 */6 1,15 * * z konfiguračního souboru a přesně vědět, kdy se spustí, vyžaduje mentální aritmetiku napříč pěti poli. Tento parser odvede tu práci okamžitě.

Okamžité parsování
Napište nebo vložte cron výraz a ihned uvidíte čitelný popis a příštích 10 naplánovaných spuštění. Žádné tlačítko Odeslat, žádné načítání stránky.
🔒
Zpracování s důrazem na soukromí
Veškeré parsování probíhá lokálně ve vašem prohlížeči. Vaše cron výrazy a data plánu nikdy neopustí vaše zařízení.
📋
Rozpis pole po poli
Každé z pěti polí je zparsováno a zobrazeno samostatně s rozloženými hodnotami. Na první pohled uvidíte, které pole plán řídí.
🔄
Bez nutnosti účtu
Otevřete stránku a začněte parsovat. Žádné přihlášení, žádný API klíč, žádná instalace. Funguje na jakémkoli zařízení s moderním prohlížečem.

Případy použití Cron Parseru

Frontend Developer
Ověřte cron výrazy v administrátorských dashboardech a plánovacích rozhraních před jejich odesláním do backendu. Zkontrolujte, zda plán, který uživatel vybral v rozbalovacím seznamu, odpovídá cron řetězci vygenerovanému formulářem.
Backend Engineer
Debugujte naplánované úlohy, které se spouštějí v neočekávaných časech. Vložte cron výraz z konfigurace vaší fronty úloh (Celery, Sidekiq, Quartz) a zkontrolujte, zda příští časy spuštění odpovídají vašemu očekávání.
DevOps / SRE
Auditujte cron plány v CI/CD pipeline, Kubernetes CronJobs a konfiguracích cloudových plánovačů. Před nasazením ověřte, zda jsou zálohovací úlohy, obnovování certifikátů a čisticí skripty správně načasovány.
QA Engineer
Ověřte, zda naplánované úlohy v testovacím prostředí odpovídají produkčnímu plánu. Zachyťte chyby o jednu pozici v polích měsíce nebo dne v týdnu dříve, než způsobí přeskočení spuštění v produkci.
Data Engineer
Zkontrolujte cron triggery pro ETL pipeline a úlohy synchronizace dat. Ověřte, zda se extrakční okna nepřekrývají a zda mají navazující závislosti dostatek časové rezervy.
Student / Začátečník
Naučte se syntaxi cron experimentováním s různými výrazy a sledováním výsledků v reálném čase. Vybudujte si intuici pro to, jak spolu interagují zástupné znaky, rozsahy a kroky.

Referenční příručka syntaxe cron výrazů

Standardní cron výraz má pět polí oddělených mezerami. Každé pole přijímá celá čísla, zástupné znaky, rozsahy, seznamy a krokové hodnoty. Níže uvedená tabulka zobrazuje povolený rozsah a operátory pro každé pole.

PoleRozsahOperátoryPopis
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)

Čtyři speciální znaky řídí způsob, jakým jsou hodnoty v každém poli porovnávány:

ZnakNázevChování
*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."

Zde jsou časté cron výrazy pokrývající většinu potřeb plánování:

VýrazPlán
* * * * *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

Příklady kódu

Jak parsovat cron výrazy a vypočítat příští časy spuštění v populárních jazycích:

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"

Časté dotazy

Jaký je rozdíl mezi 5-polním a 6-polním cron výrazem?
Standardní formát (POSIX) cron má 5 polí: minuta, hodina, den v měsíci, měsíc, den v týdnu. Některé nástroje jako Quartz Scheduler a Spring přidávají na začátek pole pro sekundy, čímž vzniká 6 polí. AWS EventBridge používá 6 polí s polem roku na konci. Tento parser podporuje standardní 5-polní formát, který je kompatibilní s crontab, GitHub Actions, Kubernetes CronJobs a většinou plánovacích knihoven.
Jak cron zpracovává den v měsíci a den v týdnu společně?
Jsou-li obě pole omezena (ne *), cron používá logiku OR: úloha se spustí, splní-li se kterákoli podmínka. Například 0 9 15 * 1 znamená 'v 9:00 15. dne každého měsíce NEBO každé pondělí'. To je častý zdroj zmatení. Jsou-li obě pole nastavena na *, úloha se spustí každý den.
Jaké časové pásmo cron používá?
Tradiční crontab běží v lokálním časovém pásmu systému. Kubernetes CronJobs standardně používají časové pásmo kube-controller-manageru (zpravidla UTC), ale od Kubernetes 1.25 podporují volitelné pole .spec.timeZone. AWS EventBridge a Google Cloud Scheduler umožňují zadat časové pásmo pro každý plán zvlášť. Vždy ověřte, jaké časové pásmo váš plánovač používá, než cron úlohu nasadíte.
Může cron spustit úlohu každých 30 sekund?
Standardní 5-polní cron nepodporuje plánování kratší než jedna minuta. Nejmenší interval je jedna minuta (*/1 nebo *). Chcete-li spouštět něco každých 30 sekund, potřebujete buď 6-polní cron s polem sekund (Quartz, Spring), obalovací skript, který 30 sekund čeká a spustí se znovu, nebo jiný plánovací mechanismus, například systemd timery s OnCalendar.
Je 0 totéž co 7 v poli dne v týdnu?
Ve většině implementací cron představují 0 i 7 neděli. Tato konvence pochází z původního Unix cron. Některé systémy (Quartz) však používají 1 pro neděli a 7 pro sobotu. POSIX definuje rozsah 0–6, kde 0 = neděle. Pokud váš plánovač přijímá pojmenované dny (SUN, MON), použijte je, abyste předešli nejednoznačnosti.
Co se stane, pokud nastavím den v měsíci, který neexistuje?
Naplánujete-li úlohu na 31. den (0 0 31 * *), v měsících s méně než 31 dny se nespustí. Cron nepřechází do dalšího měsíce. Únor bude vždy přeskočen, stejně jako duben, červen, září a listopad. Chcete-li spouštět úlohu poslední den každého měsíce, některé implementace cron podporují modifikátor L (0 0 L * *), ale standardní POSIX cron nikoli.
Jak mohu otestovat cron výraz před nasazením?
Použijte online parser, jako je tento, abyste viděli příští časy spuštění a ověřili, že plán odpovídá vašemu záměru. Pro produkční validaci poskytuje většina cron knihoven funkci pro výpočet příštího spuštění: cron-parser v Node.js, croniter v Python, robfig/cron v Go. Spusťte výraz přes jednu z těchto knihoven ve svém testovacím kódu a ověřte příštích N časů spuštění před nasazením.