Tutte le guide

Convertire un timestamp Unix in data, e una data in timestamp

Pubblicata il · Aggiornata il 3 min di lettura

Un timestamp Unix è un numero che conta il tempo trascorso dal 1° gennaio 1970 a mezzanotte, in tempo universale. Lo incontrate nei database, nei log dei programmi e nelle interfacce dei siti. Due domande decidono la data che ottenete: l'unità del numero e il fuso orario in cui leggete il risultato.

Un valore di riferimento

Convertire timestamp Unix dà tre letture dello stesso istante. Per 1700000000, con un browser impostato sull'ora di Parigi:

LetturaRisultato
Data UTCTue, 14 Nov 2023 22:13:20 GMT
Data locale14 novembre 2023 alle 23:13:20 UTC+1
ISO2023-11-14T22:13:20.000Z

L'ora locale segue il fuso del browser: un'ora in più a Parigi in inverno. Lo stesso timestamp è un unico istante, letto in due fusi orari.

L'unità si riconosce dal numero di cifre

L'impostazione predefinita riconosce l'unità dalla lunghezza del numero. I tre valori seguenti indicano lo stesso istante, entro la precisione.

NumeroCifreUnità riconosciutaIstante ottenuto
170000000010Secondi14 nov 2023, 22:13:20 UTC
170000000000013Millisecondi14 nov 2023, 22:13:20 UTC
170000000012345616Microsecondi14 nov 2023, 22:13:20.123 UTC

La regola: fino a 11 cifre, secondi; da 12 a 14, millisecondi; 15 e 16, microsecondi. L'impostazione «millisecondi» forza quell'unità.

La trappola della regola

Poiché l'unità si deduce dalla lunghezza, un valore ambiguo viene letto in un solo modo: 10000000000 (11 cifre) dà il 20 novembre 2286, e 100000000000 (12 cifre) il 3 marzo 1973. Un timestamp in millisecondi anteriore a marzo 1973 ha 11 cifre o meno e verrebbe letto come secondi: forzate allora l'impostazione «millisecondi».

Valori anteriori al 1970 e limite del 2038

Un numero negativo indica un istante anteriore al 1970: −1 dà il 31 dicembre 1969 alle 23:59:59 UTC, e 0 dà il 1° gennaio 1970 a mezzanotte.

Il numero 2147483647 è il più grande che un intero a 32 bit con segno possa contenere: dà il 19 gennaio 2038 alle 03:14:07 UTC. Il numero successivo, 2147483648, dà le 03:14:08. Lo strumento prosegue senza limite, ma un sistema che memorizza il tempo su 32 bit non può: è il «bug dell'anno 2038».

Convertire una data in timestamp

Inserite una data invece di un numero: lo strumento dà il timestamp in secondi e in millisecondi.

InserimentoTimestamp in secondiLettura
2026-01-011767225600Mezzanotte in tempo universale, nessun fuso indicato
2026-01-01T10:30:00+01:001767259800Le 10:30 a Parigi, cioè le 09:30 in tempo universale
2024-02-291709164800Anno bisestile accettato

Una data senza fuso orario viene letta in tempo universale, non in ora locale: lo strumento lo ricorda nel risultato. Una data che non esiste, come il 30 febbraio 2026, viene rifiutata con un messaggio.

Errori comuni

  • Leggere i millisecondi come secondi: la data finisce migliaia di anni troppo lontano.
  • Dimenticare il fuso orario: una data letta come locale e poi inviata come universale si sposta di una o più ore.
  • Scrivere una data senza fuso orario pensando all'ora locale, quando verrà letta in tempo universale.

Per contare i giorni tra due date, vedete Contare i giorni tra due date.

Per quali casi

Un log di programma, un database, la risposta di un servizio online o un file esportato: il numero è difficile da leggere, la data si legge subito.

Verificare una conversione

  1. Rileggete la riga UTC, che non dipende dal vostro dispositivo.
  2. Verificate l'unità indicata nella prima riga del risultato.
  3. Riconvertite la data ottenuta: dovete ritrovare il numero di partenza.

Convertire timestamp Unix

Domande frequenti

Che cos'è un timestamp Unix?
Il numero di secondi trascorsi dal 1° gennaio 1970 a mezzanotte, in tempo universale.
Come si capisce se un numero è in secondi o in millisecondi?
Lo strumento lo deduce dal numero di cifre: fino a 11 cifre, secondi; da 12 a 14, millisecondi; 15 e 16, microsecondi.
Che cosa succede nel 2038?
Il numero 2147483647, il più grande intero a 32 bit con segno, corrisponde al 19 gennaio 2038. Un sistema che memorizza il tempo su 32 bit non può andare oltre.
Quale fuso orario si usa per una data senza fuso?
Il tempo universale, non l'ora locale. Lo strumento lo ricorda nel risultato.