LibraTool logoLibraTool

Бесплатен Градител на cron изрази

Изградете, потврдете и објаснете cron изрази за закажани задачи. Опис на обичен јазик во живо, преглед на следните 5 извршувања и претходно поставени вообичаени шеми.

Работи офлајн откако ќе се вчита
минута
(0-59)
час
(0-23)
ден
(1-31)
месец
(1-12)
ден во неделата
(0-7)

На обичен јазик

Во 9:00, Понеделник до петок.

Вообичаени шаблони

Компатибилно со стандарден Unix cron, GitHub Actions, Kubernetes CronJob и повеќето системи за закажување. Користете * за „секој“, */5 за „секои 5“, 1-5 за опсези, 1,15 за конкретни вредности. Исто така прифаќа @hourly, @daily, @weekly, @monthly, @yearly, и имиња како MON-FRI или JAN-DEC.

Како функционира

Градителот на cron изрази работи целосно во вашиот прелистувач користејќи рачно напишан парсер во lib/cron.ts — без надворешна библиотека, без повик до сервер. Ги проверува изразите, составува опис на обичен јазик користејќи ги вградените Intl.DateTimeFormat и Intl.ListFormat API-и на прелистувачот за имиња на денови и месеци свесни за локал, и ги пресметува следните закажани извршувања со одење напред низ времето со логика на прескокнување полиња наместо со сила да проверува секоја минута.

  1. 1
    Изразот се парсира поле по поле
    Парсерот го дели изразот на пет (или шест) полиња одделени со празни места и ги токенизира за запирки, опсези (на пр. 1-5), нотација на чекор (на пр. */15), и именувани вредности како MON или JAN. @макроа како @daily се прошируваат во своите петполски еквиваленти пред да започне парсирањето. Неважечки вредности или бројки надвор од опсег се прикажуваат како типизирани клучеви за грешка кои се пресликуваат на локализирани пораки.
  2. 2
    Составен опис читлив за луѓе
    describeCron() во lib/cron.ts ја гради англиската (или локализирана) реченица со проверка кои полиња се џокери наспроти експлицитни множества. Имињата на денови и месеци се разрешуваат преку Intl.DateTimeFormat со активниот локал, а ставките во листата се спојуваат користејќи Intl.ListFormat така што сврзникот („и“ наспроти „,“ наспроти форма специфична за локалот) одговара на јазикот на корисникот.
  3. 3
    Следните извршувања се пресметуваат со прескокнување полиња
    nextRuns() го поместува Date објектот напред од тековниот момент, но прескокнува цели месеци, денови или часови што не можат да се совпаднат наместо да тестира секоја минута. Ова значи дека невозможен распоред како 30 февруари брзо излегува преку проверка на петгодишен хоризонт наместо да циклира 2,6 милиони пати.
  4. 4
    Изразот се споделува преку фрагментот на URL-то
    Секој израз што го пишувате се запишува во фрагментот на URL-то на страницата како #expr= (одложено 500 ms преку window.history.replaceState). Фрагментот никогаш не се испраќа до сервер; страницата се хидрира од него при вчитување, така што споделувањето или обележувањето на URL-то ги враќа точните изрази без никаква состојба на сервер.

Поврзани алатки

Најчесто поставувани прашања