Ga naar hoofdinhoud
LibraTool logoLibraTool

Gratis Cron-expressiebouwer

Bouw, valideer en verklaar cron-expressies voor geplande taken. Live beschrijving in gewone taal, voorvertoning van de volgende 5 uitvoeringen en presets voor veelgebruikte patronen.

Werkt offline na het laden
minuut
(0-59)
uur
(0-23)
dag
(1-31)
maand
(1-12)
weekdag
(0-7)

In gewone taal

Op 09:00, Maandag tot vrijdag.

Veelgebruikte patronen

Compatibel met standaard Unix cron, GitHub Actions, Kubernetes CronJob en de meeste planningssystemen. Gebruik * voor 'elke', */5 voor 'elke 5', 1-5 voor bereiken, 1,15 voor specifieke waarden. Accepteert ook @hourly, @daily, @weekly, @monthly, @yearly, en namen zoals MON-FRI of JAN-DEC.

Veelvoorkomend gebruik

  • Bouw Cron voor GitHub Actions-workflowsGitHub Actions gebruikt cronsyntaxis voor geplande workflows. Bouw en verifieer hier uw schema.
  • Bouw Cron voor Kubernetes CronJobsKubernetes CronJob-resources gebruiken standaard cronsyntaxis. Bouw en leg de uitdrukking visueel uit.
  • Bouw Cronvermeldingen voor Linux crontabBouw uitdrukkingen voor traditionele Unix cron (cron, crontab -e) met vertrouwen.
  • Plan DatabaseonderhoudstakenPlan backup-, vacuum- of analyze-taken met vertrouwen met cronuitdrukkingen.
  • Leer Hoe Cronuitdrukkingen WerkenElke aanpassing toont onmiddellijke duidelijke Engelse uitleg en een voorvertoning van de volgende 5 runs — de beste manier om cron te leren.

Hoe het werkt

De cron-expressiebouwer draait volledig in je browser met een zelfgeschreven parser in lib/cron.ts — geen externe bibliotheek, geen serveraanroep. Hij controleert de expressie, stelt een beschrijving in gewone taal samen met de ingebouwde Intl.DateTimeFormat- en Intl.ListFormat-API's van de browser voor dag- en maandnamen in je taal, en berekent de volgende geplande uitvoertijden door vooruit in de tijd te lopen met logica die velden overslaat in plaats van elke minuut af te gaan.

  1. 1
    De expressie wordt veld voor veld geparst
    De parser splitst de expressie in vijf (of zes) door witruimte gescheiden velden en tokeniseert elk veld op komma's, bereiken (bijv. 1-5), stapnotatie (bijv. */15) en benoemde waarden zoals MON of JAN. @macro's zoals @daily worden vóór het parsen uitgebreid tot hun equivalent met vijf velden. Ongeldige waarden of getallen buiten bereik worden getoond als getypeerde foutsleutels die aan vertaalde meldingen zijn gekoppeld.
  2. 2
    Een leesbare beschrijving wordt samengesteld
    describeCron() in lib/cron.ts bouwt de Engelse (of vertaalde) zin door na te gaan welke velden jokertekens zijn en welke expliciete sets. Dag- en maandnamen worden opgehaald via Intl.DateTimeFormat met de actieve taal, en lijstitems worden samengevoegd met Intl.ListFormat, zodat het voegwoord ('en' vs ',' vs een taalspecifieke vorm) bij de taal van de gebruiker past.
  3. 3
    Volgende uitvoertijden berekend met het overslaan van velden
    nextRuns() laat een Date-object vanaf het huidige moment vooruitlopen, maar slaat hele maanden, dagen of uren over die niet kunnen overeenkomen in plaats van elke minuut te testen. Daardoor stopt een onmogelijk schema zoals 30 februari snel via een controle over vijf jaar vooruit, in plaats van 2,6 miljoen keer te herhalen.
  4. 4
    De expressie wordt gedeeld via het URL-fragment
    Elke expressie die je typt wordt als #expr= in het URL-fragment van de pagina geschreven (met 500 ms debounce via window.history.replaceState). Het fragment wordt nooit naar een server gestuurd; de pagina laadt het bij het openen, dus delen of een bladwijzer maken van een URL herstelt precies de expressie zonder serverstatus.

Gerelateerde tools

Veelgestelde vragen