Convertitore timestamp Unix (Epoch ⇄ Data)
Dati di input
| Direzione di conversione | Epoch → Data |
|---|---|
| Timestamp Unix | 1.784.550.784 |
| Unità del timestamp | Secondi |
| Data | 20 lug 2026 |
Convertitore timestamp Unix (Epoch ⇄ Data)
Converti un timestamp Unix (epoch) in data e ora UTC leggibili e in formato ISO 8601, oppure trasforma una data del calendario nel corrispondente valore epoch in secondi e millisecondi.
Dati di input
Parametri
Risultati
Inserisci un valore per visualizzare i risultati.
Risultato
Timestamp Unix (Epoch ⇄ Data)
Un timestamp Unix è un numero intero che conta i secondi trascorsi dal 1970-01-01 00:00:00 UTC, noto come epoch Unix. I sistemi informatici lo utilizzano come rappresentazione compatta e non ambigua di qualsiasi istante temporale, indipendente dai fusi orari e dai sistemi di calendario locali. Questo calcolatore converte un valore epoch in data e ora leggibili, e viceversa.
Origine e definizione
La scelta del 1970-01-01 come punto di riferimento è una convenzione storica: quando il team dei Bell Labs stava sviluppando il nucleo originale di Unix alla fine degli anni Sessanta, era necessario stabilire un'origine comune per i calcoli temporali. Il valore esatto era arbitrario; ciò che contava era la coerenza tra tutte le macchine che eseguivano il sistema. La convenzione fu poi adottata dallo standard POSIX e da lì si diffuse a pressoché ogni sistema operativo e linguaggio di programmazione in uso oggi.
Un timestamp di 0 corrisponde all'epoch stesso. Un timestamp di 86.400 rappresenta esattamente un giorno dopo (60 secondi × 60 minuti × 24 ore). I valori negativi rappresentano istanti precedenti al 1970 e sono pienamente validi nelle implementazioni moderne.
Secondi e millisecondi
Lo standard Unix originale conta i secondi interi. La maggior parte dell'ecosistema Unix — log di sistema, record di database, utilità da riga di comando — utilizza ancora timestamp con precisione al secondo, che producono valori a 10 cifre per le date negli anni 2000 e 2030.
JavaScript ha introdotto una variante con precisione al millisecondo: Date.now() e Date.getTime() restituiscono il numero di millisecondi dall'epoch, generando valori a 13 cifre. Molte API REST, flussi di eventi e database affini a JavaScript seguono questa convenzione.
Regola pratica: un valore a 10 cifre è quasi certamente in secondi; un valore a 13 cifre è quasi certamente in millisecondi. Per passare dai millisecondi ai secondi è sufficiente dividere per 1.000 — operazione che questo calcolatore esegue automaticamente quando si seleziona l'unità millisecondi.
Come funziona la conversione
Da epoch a data. Dato un timestamp in secondi, la data e l'ora UTC si ricavano come segue:
giorniora del giorno=⌊86400t⌋=tmod86400Il conteggio dei giorni viene quindi mappato su una data del calendario gregoriano prolettico tenendo conto degli anni bisestili. L'ora del giorno è scomposta in ore, minuti e secondi tramite divisioni modulari successive.
Da data a epoch. Data una data del calendario alla mezzanotte UTC, il valore epoch si calcola contando il numero di giorni dal 1970-01-01 e moltiplicando per 86.400. Per una data come il 2024-01-01 il conteggio è 19.723 giorni, che fornisce un epoch di:
Il calcolatore utilizza internamente l'API Temporal per gestire con precisione gli anni bisestili e i casi limite del calendario.
Il problema del 2038
Molti sistemi datati memorizzano i timestamp Unix come interi con segno a 32 bit. Il valore massimo rappresentabile è 2.147.483.647, corrispondente al 2038-01-19 03:14:07 UTC. Superato quell'istante, il contatore va in overflow e torna al valore negativo più grande possibile a 32 bit, inducendo quei sistemi a interpretare la data come il 1901-12-13.
I sistemi a 64 bit non sono interessati dal problema. Un intero con segno a 64 bit può rappresentare timestamp su un arco di circa 292 miliardi di anni, ben oltre qualsiasi esigenza pratica. Il problema del 2038 riguarda quindi il software legacy — sistemi embedded, database non aggiornati, librerie di terze parti — non il concetto di epoch Unix in sé. La maggior parte dei sistemi operativi, dei database e dei linguaggi di programmazione diffusi è già passata alla gestione del tempo a 64 bit.
Aspetti da tenere presenti
Fusi orari. Un timestamp Unix conta i secondi dall'epoch UTC e non codifica alcun fuso orario. Quando si converte un orario locale in epoch, è necessario prima convertirlo in UTC. Questo calcolatore utilizza la mezzanotte UTC come riferimento per le date senza orario specificato.
Secondi intercalari. Il tempo Unix non tiene conto dei secondi intercalari: assume esattamente 86.400 secondi in ogni giorno. Il timestamp Unix non è quindi strettamente equivalente al Tempo Atomico Internazionale (TAI). Per le applicazioni software ordinarie questa discrepanza — circa 27 secondi cumulativi al 2024 — è irrilevante.
Overflow nei sistemi esterni. Anche se il sistema operativo utilizza il tempo a 64 bit, librerie di terze parti, tipi di colonna nei database o formati di serializzazione possono ancora memorizzare i timestamp come interi a 32 bit. Quando si scrive o si legge da sistemi esterni, è opportuno verificare la larghezza di archiviazione se la precisione per date prossime o successive al 2038 è rilevante.
Domande frequenti (FAQ)
Che cos'è un timestamp Unix?
Un timestamp Unix (detto anche timestamp POSIX o epoch time) è un numero intero che rappresenta i secondi trascorsi dall'epoch Unix: il 1970-01-01 00:00:00 UTC. Quella data è una convenzione storica nata durante lo sviluppo del sistema operativo Unix presso i Bell Labs.
Poiché il timestamp è un singolo intero indipendente dai fusi orari e dai sistemi di calendario, è il metodo standard con cui la maggior parte dei sistemi informatici archivia e trasmette gli istanti temporali. Per convertirlo in una data leggibile occorre specificare il fuso orario di riferimento; questo calcolatore utilizza sempre il Tempo Universale Coordinato (UTC).
Come si riconosce se un valore è in secondi o in millisecondi?
I timestamp Unix standard contano i secondi interi. Un valore di 10 cifre (ad esempio 1.700.000.000) è quasi certamente in secondi e corrisponde a una data nel 2023. Un valore di 13 cifre (ad esempio 1.700.000.000.000) è quasi certamente in millisecondi, come quelli prodotti da Date.now() e Date.getTime() di JavaScript, o da molte API REST e sistemi di log.
Regola pratica: 10 cifre → secondi; 13 cifre → millisecondi. Valori con 11 o 12 cifre si collocano in una zona intermedia e potrebbero essere microsecondi o unità non standard — in quel caso è necessario verificare la documentazione della sorgente.
Che cos'è il problema del 2038?
Molti sistemi meno recenti memorizzano i timestamp Unix come interi con segno a 32 bit, capaci di rappresentare valori compresi tra −2.147.483.648 e 2.147.483.647. Il valore massimo corrisponde al 2038-01-19 03:14:07 UTC. Superato quell'istante, il contatore va in overflow e torna a un grande numero negativo, che quei sistemi interpreterebbero come una data del 1901.
I sistemi moderni utilizzano interi a 64 bit, che consentono di rappresentare date su un arco di centinaia di miliardi di anni. Il problema riguarda esclusivamente sistemi embedded datati, database obsoleti e software non aggiornato: la maggior parte dei sistemi operativi e dei linguaggi di programmazione diffusi ha già adottato la gestione del tempo a 64 bit.
Da provare dopo
Calcolatore di età
Calcola con precisione l'età e il conto alla rovescia per il prossimo compleanno a partire dalla data di nascita.