Comando date in Linux: formattare data e ora e usare UTC
date mostra la data e l’ora correnti e permette di scegliere il formato dell’output. È utile per creare stringhe di data in script, nomi di file e registrazioni di log.
L’output predefinito dipende da fuso orario e impostazioni locali. Con +FORMATO selezioni i campi da visualizzare; con -u li esprimi nel Tempo coordinato universale (UTC). Queste operazioni di lettura non cambiano l’orologio del sistema, a differenza delle opzioni che impostano effettivamente data e ora.
Sintassi di base
date [opzioni] [+formato]
Le parentesi indicano argomenti facoltativi e non vanno digitate. Il segno + deve precedere il formato. Apri un terminale sul sistema da esaminare: per gli esempi di visualizzazione non serve sudo. In SSH ottieni la data del sistema remoto.
Le opzioni disponibili dipendono dall’implementazione. Su GNU/Linux sono comuni quelle di GNU coreutils; consulta man date e l’aiuto della versione installata. Non presumere che opzioni GNU come -d e -I abbiano lo stesso significato su altri sistemi Unix.
Esempi pratici
Data e ora correnti
date
Il comando usa il formato predefinito della locale. Giorno e mese possono essere scritti in forma abbreviata e in una lingua diversa: per elaborare il risultato in uno script è preferibile specificare esplicitamente il formato.
Data in un formato uniforme
date +%Y-%m-%d
Ottieni anno, mese e giorno, per esempio 2026-09-28. Questo valore è illustrativo: l’esecuzione restituisce la data corrente nel fuso applicato. Il formato è utile nei nomi dei file, ma una data senza ora non distingue più esecuzioni nello stesso giorno.
Data e ora in UTC
date -u +%Y-%m-%dT%H:%M:%SZ
Un risultato ha la forma 2026-09-28T00:00:00Z, con valori dipendenti dall’istante di esecuzione. T separa data e ora; la Z finale è un carattere letterale che indica UTC in questo esempio. Non aggiungerla all’ora locale omettendo -u: il testo non converte da solo il fuso.
Capire formato e fuso orario
Per mostrare l’ora UTC fino ai minuti con un’etichetta leggibile, usa un unico argomento tra virgolette: lo spazio interno deve rimanere nel formato.
date -u '+%Y-%m-%d %H:%M UTC'
Esempio di output, non lettura dell’ora corrente:
2026-09-28 00:00 UTC
%Y indica l’anno, normalmente su quattro cifre; %m il mese e %d il giorno. %H è l’ora su 24 ore, %M i minuti e %S i secondi. Maiuscole e minuscole contano: %m e %M non sono intercambiabili.
Senza -u, GNU date usa le regole della variabile d’ambiente TZ, se definita, altrimenti quelle predefinite del sistema. Un’assegnazione come TZ=UTC0 date vale solo per quel comando e non cambia il fuso di sistema. Con -u, il comando opera in UTC anche se TZ indica un altro fuso.
Negli script GNU, LC_ALL=C rende prevedibili i nomi testuali di giorni e mesi. Per confrontare registrazioni tra server preferisci un formato numerico con indicazione del fuso. Usare UTC elimina l’ambiguità del fuso, ma non sincronizza gli orologi: due server possono avere comunque orari discordanti.
Opzioni e formati principali
| Opzione o formato | Risultato |
|---|---|
+%Y-%m-%d |
Anno, mese e giorno separati da trattini. |
+%H:%M:%S |
Ore, minuti e secondi; da solo non specifica il fuso. |
-u |
Visualizza in UTC senza cambiare l’orologio o il fuso configurato. |
-I |
In GNU date mostra per impostazione predefinita la sola data ISO 8601, non un timestamp completo. |
-d stringa |
In GNU date interpreta e visualizza la data indicata invece dell’istante attuale, senza impostare il clock. |
Precauzioni e verifica dei risultati
Per riprodurre l’output illustrativo con GNU date puoi eseguire date -u -d '2026-09-28 00:00:00 UTC' '+%Y-%m-%d %H:%M UTC'. Il risultato atteso è 2026-09-28 00:00 UTC; la data fissa e il fuso esplicito rendono il confronto ripetibile. La stringa passata a -d deve rispettare i formati di ingresso accettati da GNU date: non tutte le date scritte in lingua naturale o in formato locale sono interpretabili senza ambiguità.
La verifica con GNU coreutils 8.32 tramite Git per Windows ha eseguito i quattro esempi di lettura, riprodotto l’output fisso e controllato formato ISO, mese rispetto a minuti e precedenza di -u su un TZ a scarto fisso. Si tratta di prove su Windows, non di una verifica del servizio orario Linux o della sincronizzazione di rete.
date -s e altri modi di impostare l’ora modificano invece il sistema e richiedono i permessi necessari. Possono influire su autenticazione, log e attività pianificate: prima di intervenire controlla la configurazione e lo stato della sincronizzazione. Gli esempi di questa guida non impostano l’ora; non è stata eseguita alcuna modifica dell’orologio.
Se GNU date rifiuta una stringa, verifica prima formato, virgolette e fuso dichiarato; uno stato di uscita diverso da zero segnala un errore. Non interpretare un valore illustrativo come conferma dell’ora reale e non correggere l’orologio soltanto perché una visualizzazione usa un fuso diverso.
Domande frequenti
Quale fuso orario segue l’output di date?
GNU date segue TZ quando è definita e, altrimenti, il fuso predefinito del sistema. L’opzione -u seleziona UTC per quell’esecuzione senza cambiare la configurazione permanente.
Documentazione ufficiale
Consulta le sezioni «date invocation», «Date format specifiers» e «Options for date» del manuale nel repository ufficiale GNU coreutils per sintassi, formati e opzioni.




