Come usare il convertitore timestamp Unix
- Incolla un timestamp Unix. Il convertitore riconosce se è in secondi o in millisecondi.
- Leggi la data in UTC, nel tuo fuso orario locale e nel formato ISO 8601.
- Per la conversione inversa, scegli una data e un'ora e copia il timestamp risultante.
Le conversioni vengono calcolate nel tuo browser usando l'orologio e le impostazioni del fuso orario del dispositivo; nulla viene inviato a un server o salvato su di esso.
Che cos'è un timestamp Unix?
Un timestamp Unix (detto anche epoch time o tempo POSIX) è il numero di secondi trascorsi dall'epoca Unix: 1970-01-01T00:00:00Z, la mezzanotte UTC del 1° gennaio 1970. Le date precedenti all'epoca sono numeri negativi.
I timestamp sono diffusi perché sono un singolo numero intero, indipendente da fusi orari e ora legale, facile da confrontare e ordinare e compatto da salvare. La conversione in ora locale è una questione di visualizzazione, gestita all'ultimo momento.
1700000000 → 2023-11-14T22:13:20Z
0 → 1970-01-01T00:00:00Z
-86400 → 1969-12-31T00:00:00Z
Secondi o millisecondi
Gli strumenti Unix, PHP, time.time() di Python e la maggior parte dei database usano i secondi. Date.now() di JavaScript, System.currentTimeMillis() di Java e molte API JSON usano i millisecondi. Per le date attuali, un valore in secondi ha 10 cifre e uno in millisecondi ne ha 13. Confonderli è in assoluto l'errore più comune con i timestamp:
new Date(1700000000) // Tue Jan 20 1970 (trattato come ms!)
new Date(1700000000 * 1000) // Tue Nov 14 2023
I secondi intercalari vengono ignorati
Il tempo Unix presume che ogni giorno abbia esattamente 86.400 secondi. Quando in UTC viene inserito un secondo intercalare, il tempo Unix non lo conta, quindi il timestamp non coincide con il numero reale di secondi SI trascorsi dal 1970. Per quasi tutte le applicazioni questo è irrilevante, e così i calcoli sulle date restano semplici.
Errori comuni
Il problema dell'anno 2038
I sistemi che salvano i timestamp come intero a 32 bit con segno possono contare solo fino a 2.147.483.647, cioè 2038-01-19T03:14:07Z. Un secondo dopo il valore va in overflow e ricomincia da un numero negativo, che rappresenta una data del dicembre 1901. I sistemi operativi e i linguaggi moderni usano il tempo a 64 bit, ma dispositivi embedded, vecchi formati di file e colonne di database dichiarate come interi a 32 bit restano a rischio. Usa interi a 64 bit o tipi data/ora nativi per tutto ciò che potrebbe contenere date future.
L'ora locale che si intrufola
Analizzare una stringa di data senza fuso orario, come 2024-03-10 02:30, usa il fuso locale della macchina e può produrre timestamp diversi su server diversi, oppure un'ora non valida durante il passaggio all'ora legale o solare. Includi sempre un offset o Z.
ISO 8601
Per lo scambio leggibile dalle persone, lo standard è ISO 8601 (e il suo profilo per internet, la RFC 3339): 2023-11-14T22:13:20Z o 2023-11-14T23:13:20+01:00. Come i timestamp, le stringhe ISO 8601 in UTC si ordinano correttamente come semplice testo.
Ottenere il timestamp attuale nel codice
| Ambiente | Secondi dall'epoca |
|---|---|
| Shell (Linux, macOS) | date +%s |
| Python | import time; int(time.time()) |
| JavaScript | Math.floor(Date.now() / 1000) |
| PHP | time() |
| MySQL | SELECT UNIX_TIMESTAMP(); |
| PostgreSQL | SELECT EXTRACT(EPOCH FROM now()); |
Per riconvertire un timestamp in data dalla riga di comando, usa date -u -d @1700000000 su Linux (GNU date) o date -u -r 1700000000 su macOS.
exp, iat e nbf come timestamp Unix in secondi. Il decoder JWT li converte per te. Per identificatori ordinati nel tempo che incorporano un timestamp in millisecondi, vedi il generatore di UUID v7.Domande frequenti
Un timestamp Unix è uguale in tutti i fusi orari?
Sì. Conta i secondi a partire da un istante fisso in UTC, quindi in un dato momento è identico ovunque. Cambia solo la sua conversione nell'ora locale.
Come distinguo i secondi dai millisecondi?
Conta le cifre. Le date attuali hanno 10 cifre in secondi e 13 in millisecondi. Una "data" nel gennaio 1970 di solito significa che un valore in secondi è stato letto come millisecondi; una data decine di migliaia di anni nel futuro significa il contrario.
Cosa succede nel 2038?
Smette di funzionare correttamente solo il software che salva il tempo in un intero a 32 bit con segno. I timestamp a 64 bit non andranno in overflow per miliardi di anni.
Un timestamp Unix può essere negativo?
Sì. I valori negativi rappresentano momenti precedenti al 1° gennaio 1970, anche se alcuni sistemi e API più vecchi non li accettano.
Aggiornato