Come convertire il tempo Epoch in una data leggibile
Convertire il tempo Epoch in una data sono due passaggi: decodificare il numero come un istante in UTC e poi formattare quell'istante nel fuso orario che ti serve. Questa guida spiega il modello mentale, come distinguere secondi e millisecondi e la decisione UTC contro locale, e poi ti rimanda alla ricetta per linguaggio e al convertitore di istanti.
Epoch in data sono due passaggi
Convertire un timestamp Epoch in una data leggibile sono sempre gli stessi due passaggi: decodificare il numero come un istante in UTC e poi formattare quell'istante nel fuso orario in cui vuoi mostrarlo. Il numero in sé non porta alcun fuso — è un singolo momento —, quindi lo stesso valore appare come un'ora da orologio a muro diversa (a volte un giorno di calendario diverso) a seconda del fuso in cui lo formatti. La tabella qui sotto mostra un timestamp reso in più fusi; il resto di questa guida copre l'unità, la scelta del fuso e il codice.
| Fuso orario | Data e ora locali per 1700000000 |
|---|---|
| UTC (l'istante canonico) | 2023-11-14 22:13:20 · ISO 2023-11-14T22:13:20Z |
| America/New_York | 2023-11-14 17:13:20 (EST) |
| Asia/Tokyo | 2023-11-15 07:13:20 (JST) |
| Australia/Sydney | 2023-11-15 09:13:20 (AEDT) |
Cos'è il tempo Epoch?
Il tempo Epoch (chiamato anche tempo Unix o tempo POSIX) è il numero di secondi trascorsi dalle 00:00:00 UTC del 1° gennaio 1970. È lo standard universale per rappresentare istanti nell'informatica. Ogni linguaggio di programmazione e sistema operativo lo supporta in modo nativo, il che lo rende il formato più affidabile per memorizzare e scambiare timestamp tra sistemi.
Passaggio 1 — Riconoscere secondi o millisecondi
Prima di convertire, stabilisci l'unità. Si legge quasi sempre dal numero di cifre, e sbagliarla è la causa più comune di una data errata.
- 10 cifre (es. 1700000000) → secondi dall'epoch Unix
- 13 cifre (es. 1700000000000) → millisecondi dall'epoch Unix
- 16 cifre → microsecondi; 19 cifre → nanosecondi
- Nel dubbio, controlla se l'anno decodificato sembra plausibile — una data nel 1970 o in un futuro lontano significa che l'unità è stata letta male
- Il convertitore qui sopra rileva l'unità automaticamente
Passaggio 2 — Decodificare come UTC, poi scegliere un fuso
Un timestamp Unix si decodifica in un istante esatto. Mostrare quell'istante in UTC o in un fuso locale è una decisione di presentazione, non una proprietà del numero. Scegli UTC per tutto ciò che è rivolto alle macchine — log, API, archiviazione su database, confronto tra server — e converti nel fuso IANA dell'utente solo nel momento in cui mostri una data a una persona. Identifica sempre un fuso con il suo nome IANA (America/New_York), mai con un semplice scostamento, così che l'ora legale venga applicata per te.
- Rivolto alle macchine (log, API, archiviazione) → mostrare in UTC, ISO 8601 con una Z
- Rivolto all'utente (scadenze, timestamp in una UI) → convertire nel fuso IANA dell'utente
- Non memorizzare mai un'ora locale senza il suo fuso — memorizza UTC più il nome del fuso IANA
La conversione nel codice
Ogni linguaggio moderno ha una funzione integrata di una riga che esegue entrambi i passaggi per te. Lo schema è sempre lo stesso: passa il valore nell'unità che la funzione si aspetta e chiedi UTC o un fuso orario specifico. JavaScript e alcuni altri sono qui sotto; la ricetta di accompagnamento copre per intero JavaScript, Python, PHP, Java, C#, Go, SQL, Excel e Google Sheets.
- JavaScript: new Date(1700000000 * 1000).toISOString() → "2023-11-14T22:13:20.000Z"
- Python: datetime.fromtimestamp(1700000000, tz=timezone.utc).isoformat()
- Shell: date -u -d @1700000000 (GNU) / date -u -r 1700000000 (BSD, macOS)
- SQL: TO_TIMESTAMP(1700000000) (Postgres), FROM_UNIXTIME(1700000000) (MySQL)
- Regola: passa secondi dove sono attesi secondi — solo il Date di JavaScript richiede il × 1000
Errori comuni nel convertire il tempo Epoch
Gli errori più frequenti nel convertire timestamp Unix:
- Dimenticare di moltiplicare i secondi per 1000 in JavaScript — new Date(1700000000) dà l'anno 1970, non il 2023
- Usare i millisecondi di JavaScript direttamente come secondi in un linguaggio lato server (un errore di 1000×)
- Non specificare un fuso e affidarsi al fuso locale del server, che varia tra gli ambienti
- Memorizzare i timestamp come stringhe anziché come interi, il che rompe confronti e aritmetica numerici
- Usare l'obsoleto datetime.utcfromtimestamp() in Python — passa invece tz=timezone.utc a fromtimestamp()
Articoli correlati
FAQ
- Come converto il tempo Epoch in una data?
- Stabilisci se il valore è in secondi (10 cifre) o millisecondi (13 cifre), poi convertilo con l'API di date del tuo linguaggio — new Date(seconds * 1000) in JavaScript, datetime.fromtimestamp(seconds, tz=timezone.utc) in Python, oppure incollalo nel convertitore qui sopra.
- Perché il mio timestamp Epoch si converte al 1970?
- Hai passato un valore in secondi a una funzione che si aspetta millisecondi, il più delle volte il new Date() di JavaScript. Moltiplica prima per 1000 il valore in secondi di 10 cifre.
- Devo convertire il tempo Epoch in UTC o in ora locale?
- Usa UTC per log, API e confronti tra server, e converti nel fuso orario locale dell'utente solo per la visualizzazione. Il valore Epoch in sé è neutro rispetto al fuso.
- Come ottengo una data da un timestamp Unix in JavaScript?
- new Date(seconds * 1000) restituisce un oggetto Date che puoi formattare con toISOString(), toUTCString() o Intl.DateTimeFormat. La moltiplicazione serve perché il Date di JavaScript si aspetta millisecondi, non secondi.
- Come ottengo una data da un timestamp Unix in Python?
- Usa datetime.fromtimestamp(seconds, tz=timezone.utc) per un datetime UTC consapevole del fuso. Ometti l'argomento tz per l'ora locale, oppure aggiungi .isoformat() per ottenere una stringa ISO 8601.
- Lo stesso valore Epoch dà una data diversa in fusi orari diversi?
- L'istante è lo stesso ovunque, ma la data da orologio a muro che mostri dipende dal fuso — e può perfino cadere in un altro giorno di calendario. 1700000000 è il 14 nov. a New York, ma il 15 nov. a Tokyo.
- Come converto un timestamp in una data?
- Ogni linguaggio moderno ha una funzione integrata di una riga. La parte più difficile è capire se il tuo timestamp è in secondi (10 cifre) o millisecondi (13 cifre) — azzecca l'unità e la conversione in sé non fallisce mai.