Parser di Espressioni Cron

Analizza espressioni cron in descrizioni leggibili e visualizza i prossimi orari di esecuzione

Prova un esempio

Espressione cron

minute hour day(month) month day(week)

Descrizione leggibile

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

Dettaglio dei campi

Minute

0

0–59

Hour

9

0–23

Day (month)

*

1–31

Month

*

1–12

Day (week)

1-5

0–6

Prossime 10 esecuzioni pianificate

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

Cos'è il Parsing delle Espressioni Cron?

Un'espressione cron è una stringa di cinque campi separati da spazi che definisce una pianificazione ricorrente. Il formato è nato nel demone Unix cron, scritto per la prima volta da Ken Thompson per Version 7 Unix nel 1979. Ogni campo rappresenta un'unità di tempo: minuto, ora, giorno del mese, mese e giorno della settimana. Analizzare un'espressione cron significa convertire questa notazione compatta in una descrizione leggibile e in un elenco concreto di prossimi orari di esecuzione.

Il formato standard a cinque campi è utilizzato da crontab su Linux e macOS, da piattaforme CI/CD come GitHub Actions e GitLab CI, dagli scheduler cloud di AWS (EventBridge), Google Cloud Scheduler e Azure Functions, e dalle librerie di job scheduling in tutti i principali linguaggi di programmazione. Alcuni sistemi estendono il formato a sei o sette campi aggiungendo un campo per i secondi o per l'anno, ma il layout a cinque campi definito da POSIX rimane la base condivisa da tutte le implementazioni.

Analizzare le espressioni cron a mano è soggetto a errori. L'interazione tra i campi crea pianificazioni non intuitive: 0 9 1-7 * 1 non significa 'ogni lunedì della prima settimana', ma piuttosto 'dall'1 al 7 di ogni mese OPPURE qualsiasi lunedì'. Un parser cron elimina questa ambiguità espandendo ogni campo, applicando le regole di combinazione e producendo i timestamp effettivi in cui il job verrà eseguito.

Perché Usare Questo Parser Cron?

Leggere un'espressione cron come 30 */6 1,15 * * da un file di configurazione e sapere esattamente quando si attiva richiede calcoli mentali su cinque campi. Questo parser lo fa all'istante.

Parsing Immediato
Digita o incolla un'espressione cron e visualizza subito la descrizione leggibile e i prossimi 10 orari pianificati. Nessun pulsante di invio, nessun ricaricamento.
🔒
Elaborazione Privacy-first
Tutta l'elaborazione avviene localmente nel tuo browser. Le tue espressioni cron e i dati di pianificazione non lasciano mai il tuo dispositivo.
📋
Analisi Campo per Campo
Ciascuno dei cinque campi viene analizzato e visualizzato singolarmente, mostrando i valori risolti. Individua a colpo d'occhio quale campo controlla la pianificazione.
🔄
Nessun Account Richiesto
Apri la pagina e inizia subito ad analizzare. Nessun login, nessuna API key, nessuna installazione. Funziona su qualsiasi dispositivo con un browser moderno.

Casi d'Uso del Parser Cron

Frontend Developer
Verifica le espressioni cron nelle dashboard di amministrazione e nelle interfacce di pianificazione prima di inviarle al backend. Conferma che la pianificazione selezionata dall'utente in un menu a tendina corrisponda alla stringa cron generata dal form.
Backend Engineer
Fai il debug di job pianificati che si attivano in momenti imprevisti. Incolla l'espressione cron dalla configurazione della tua coda di task (Celery, Sidekiq, Quartz) e verifica che i prossimi orari di esecuzione corrispondano alle aspettative.
DevOps / SRE
Controlla le pianificazioni cron nelle pipeline CI/CD, nei Kubernetes CronJobs e nelle configurazioni degli scheduler cloud. Verifica che i job di backup, i rinnovi dei certificati e gli script di pulizia siano programmati correttamente prima del deploy.
QA Engineer
Valida che i task pianificati nell'ambiente di test corrispondano alla pianificazione di produzione. Individua errori di scostamento di uno nei campi mese o giorno della settimana prima che causino esecuzioni mancate in produzione.
Data Engineer
Controlla i trigger cron per le pipeline ETL e i job di sincronizzazione dati. Verifica che le finestre di estrazione non si sovrappongano e che le dipendenze a valle abbiano un margine di tempo sufficiente.
Studente / Principiante
Impara la sintassi cron sperimentando con diverse espressioni e vedendo i risultati in tempo reale. Sviluppa l'intuizione su come wildcards, intervalli e valori di step interagiscono tra loro.

Riferimento alla Sintassi delle Espressioni Cron

Un'espressione cron standard ha cinque campi separati da spazi. Ogni campo accetta interi, wildcards, intervalli, liste e valori di step. La tabella seguente mostra l'intervallo consentito e gli operatori per ogni campo.

CampoIntervalloOperatoriDescrizione
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)

Quattro caratteri speciali controllano come i valori vengono abbinati all'interno di ogni campo:

CharNomeComportamento
*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."

Ecco le espressioni cron più comuni che coprono la maggior parte delle esigenze di pianificazione:

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

Esempi di Codice

Come analizzare espressioni cron e calcolare i prossimi orari di esecuzione nei linguaggi più diffusi:

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"

Domande Frequenti

Qual è la differenza tra espressioni cron a 5 e a 6 campi?
Il formato cron standard (POSIX) ha 5 campi: minuto, ora, giorno-del-mese, mese, giorno-della-settimana. Alcuni strumenti come Quartz Scheduler e Spring aggiungono un campo per i secondi all'inizio, portandolo a 6 campi. AWS EventBridge usa 6 campi con un campo anno alla fine. Questo parser supporta il formato standard a 5 campi, compatibile con crontab, GitHub Actions, Kubernetes CronJobs e la maggior parte delle librerie di scheduling.
Come gestisce cron giorno-del-mese e giorno-della-settimana insieme?
Quando entrambi i campi sono specificati (non *), cron usa la logica OR: il job viene eseguito quando una delle due condizioni è vera. Ad esempio, 0 9 15 * 1 significa 'alle 9:00 del 15 di ogni mese OPPURE ogni lunedì'. Questa è una fonte comune di confusione. Se entrambi i campi sono impostati su *, il job viene eseguito ogni giorno.
Quale fuso orario usa cron?
Il crontab tradizionale utilizza il fuso orario locale del sistema. I Kubernetes CronJobs usano di default il fuso orario del kube-controller-manager (generalmente UTC), ma supportano un campo opzionale .spec.timeZone da Kubernetes 1.25. AWS EventBridge e Google Cloud Scheduler consentono di specificare il fuso orario per ogni pianificazione. Verifica sempre quale fuso orario usa il tuo scheduler prima di fare il deploy di un cron job.
Può cron eseguire un job ogni 30 secondi?
Il cron standard a 5 campi non supporta la pianificazione sub-minuto. L'intervallo minimo è un minuto (*/1 o *). Per eseguire qualcosa ogni 30 secondi, serve un cron a 6 campi con un campo secondi (Quartz, Spring), uno script wrapper che aspetta 30 secondi e si riavvia, oppure un meccanismo di scheduling diverso come i timer systemd con OnCalendar.
0 e 7 sono equivalenti per il campo giorno-della-settimana?
Nella maggior parte delle implementazioni cron, sia 0 che 7 rappresentano domenica. Questa convenzione deriva dal cron Unix originale. Tuttavia, alcuni sistemi (Quartz) usano 1 per domenica e 7 per sabato. POSIX definisce l'intervallo come 0-6 con 0 = domenica. Se il tuo scheduler accetta nomi dei giorni (SUN, MON), usali per evitare ambiguità.
Cosa succede se imposto un giorno-del-mese che non esiste?
Se pianifichi un job per il 31 (0 0 31 * *), non verrà eseguito nei mesi con meno di 31 giorni. Cron non riporta al mese successivo. Febbraio verrà sempre saltato, e lo stesso vale per aprile, giugno, settembre e novembre. Per eseguire il job l'ultimo giorno di ogni mese, alcune implementazioni cron supportano il modificatore L (0 0 L * *), ma il cron standard POSIX non lo prevede.
Come faccio a testare un'espressione cron prima del deploy?
Usa un parser online come questo per vedere i prossimi orari di esecuzione e verificare che la pianificazione corrisponda alle tue intenzioni. Per la validazione in produzione, la maggior parte delle librerie cron fornisce una funzione di calcolo della prossima esecuzione: cron-parser in Node.js, croniter in Python, robfig/cron in Go. Esegui l'espressione attraverso una di queste nella tua suite di test per verificare i prossimi N orari di esecuzione prima del deploy.