Epoch to Date

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 orarioData e ora locali per 1700000000
UTC (l'istante canonico)2023-11-14 22:13:20 · ISO 2023-11-14T22:13:20Z
America/New_York2023-11-14 17:13:20 (EST)
Asia/Tokyo2023-11-15 07:13:20 (JST)
Australia/Sydney2023-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.