Convertitore di timestamp Unix

Incolla un numero come 1700000000 per vedere a quale data corrisponde, oppure scegli una data per ottenerne il numero. Non serve dire se sono secondi, millisecondi, microsecondi o nanosecondi. Lo rivela la grandezza del numero.

Ora Unix in questo momento, in secondi

…

I risultati compaiono mentre scrivi. Ogni conversione è fatta dal tuo browser: i valori che inserisci non ci vengono inviati.

Da numero a data

Da data a numero

I campi data e ora vengono letti nel fuso orario scelto sopra. Un testo che finisce con Z o con uno scostamento come +02:00 mantiene il proprio fuso.

Un numero, lo stesso istante ovunque

Chiedi l’ora a tre persone in una videochiamata e potresti sentire 9:00, 15:00 e 23:00. Hanno tutte ragione, il che non aiuta per niente un computer che deve mettere in ordine degli eventi, far scadere una sessione o firmare un documento.

Il tempo Unix aggira il problema contando i secondi dalla mezzanotte UTC del 1° gennaio 1970, un punto di partenza chiamato epoch. Il conteggio ha raggiunto 1.700.000.000 il 14 novembre 2023 alle 22:13:20 UTC. A New York erano le 17:13 e a Tokyo era già la mattina dopo, e ogni macchina sulla Terra mostrava lo stesso numero.

Un timestamp non ha fuso orario né ora legale. I fusi entrano in gioco solo quando il numero viene trasformato in qualcosa che una persona legge. Per questo la pagina ti chiede quale fuso vuoi e mostra UTC accanto.

Secondi, millisecondi e oltre

Il conteggio originale è in secondi. Molti sistemi vogliono passi più fini, quindi contano unità più piccole a partire dalla stessa epoch, e niente nel numero dice quale unità stai guardando. Devi basarti sulla sua lunghezza:

UnitàCifre oggiFonte tipica
Secondi10Strumenti Unix, PHP time(), date dei JWT, la maggior parte delle API
Millisecondi13JavaScript Date.now(), Java, Kafka
Microsecondi16PostgreSQL, Python time.time_ns() // 1000, log di tracciamento
Nanosecondi19Go UnixNano(), InfluxDB, OpenTelemetry

Il convertitore fa lo stesso: sotto i 100 miliardi legge secondi, sotto i 100.000 miliardi millisecondi, poi microsecondi, poi nanosecondi. Ti dice quale unità ha ipotizzato. L’ipotesi sbaglia solo per date vicine al 1970 scritte in un’unità fine, e l’elenco «Unità» ti permette di correggerla.

Le unità confuse sono il classico bug dei timestamp. Leggi dei secondi come millisecondi e finisci a gennaio 1970. Leggi dei millisecondi come secondi e finisci decine di migliaia di anni nel futuro.

Valori da guardare due volte

Zero, o un numero molto piccolo
0 è l’epoch stessa. È il valore di un campo data vuoto, e nei fusi a ovest di UTC compare come 31 dicembre 1969. Vengono segnalati anche i valori entro un mese dall’epoch, perché di solito sono durate o campi che nessuno ha compilato.
Numeri negativi
Sono validi e contano all’indietro: -86400 è il 31 dicembre 1969. Alcuni software più vecchi non riescono a memorizzarli.
2.147.483.648 e oltre
Un intero con segno a 32 bit si ferma a 2.147.483.647, cioè alle 03:14:07 UTC del 19 gennaio 2038. Un secondo dopo un contatore del genere ricomincia da dicembre 1901. I sistemi che tengono ancora il tempo a 32 bit hanno tempo fino ad allora per passare a 64.
-1
Spesso è ciò che restituisce una funzione quando non è riuscita a leggere una data.

Da una data a un numero

Andare nell’altro senso richiede un’informazione in più: il fuso in cui è stata scritta la data. «9 marzo 2025 alle 14:30» è un istante a Chicago e un altro a Berlino, a sei ore di distanza. I campi di data e ora vengono letti nel fuso che selezioni. Un testo come 2025-03-09T14:30:00-05:00, o uno che finisce con Z, porta con sé il proprio scarto e viene letto così com’è scritto.

L’ora legale produce due casi strani, e lo strumento li segnala entrambi:

  • Un’ora che non esiste. Quando gli orologi saltano dalle 02:00 alle 03:00, quel giorno non ha le 02:30. Il convertitore sposta la lettura oltre il salto, come fa la maggior parte dei software, e lo dice.
  • Un’ora che esiste due volte. Quando gli orologi tornano indietro dalle 02:00 all’01:00, l’01:30 capita due volte, a un’ora di distanza. Il convertitore restituisce la prima e ti dà anche la seconda.

Il tempo Unix ignora i secondi intercalari: ogni giorno conta esattamente 86.400 secondi. Il calcolo resta semplice, ma un timestamp non è un vero conteggio dei secondi trascorsi. Dal 1972 è sfasato di 27.

Le regole dei fusi vengono dal database dei fusi orari integrato nel tuo browser. Per le date passate riflettono le regole note oggi, e un paese può ancora cambiare le sue regole per le date future.

Domande frequenti

Cos’è un timestamp Unix?

Il numero di secondi trascorsi dal 1° gennaio 1970 alle 00:00:00 UTC, senza contare i secondi intercalari. Indica un istante con un solo numero intero che non dipende da alcun fuso orario, quindi è facile da memorizzare, confrontare e sottrarre.

Come capisco se un timestamp è in secondi o in millisecondi?

Conta le cifre. Per le date attuali, i secondi hanno 10 cifre e i millisecondi 13. I microsecondi ne hanno 16 e i nanosecondi 19. Se la tua data cade nel 1970 o in un anno lontanissimo, l’unità è stata letta male.

Perché la mia data compare come 1° gennaio 1970?

Il valore memorizzato è 0 o quasi. O il campo non è mai stato compilato, o una conversione fallita ha restituito 0, oppure un valore in secondi è stato letto come millisecondi. A ovest di UTC lo stesso istante compare come 31 dicembre 1969.

Cos’è il problema dell’anno 2038?

Il software che tiene il tempo Unix in un intero con segno a 32 bit può contare fino a 2.147.483.647, cioè le 03:14:07 UTC del 19 gennaio 2038. Il secondo successivo va in overflow e viene letto come una data di dicembre 1901. La soluzione è memorizzare il tempo a 64 bit.

Un timestamp Unix ha un fuso orario?

No. Conta i secondi da un istante definito in UTC, quindi lo stesso numero è corretto ovunque. Un fuso orario viene applicato solo quando il numero viene mostrato come data del calendario e ora dell’orologio.

Come ottengo il tempo Unix attuale nel codice?

In una shell, date +%s. In JavaScript, Math.floor(Date.now() / 1000). In Python, int(time.time()). In PHP, time(). In SQL, UNIX_TIMESTAMP() su MySQL e EXTRACT(EPOCH FROM now()) su PostgreSQL.