Il timestamp epoch spiegato: tempo Unix, tempo POSIX e secondi dal 1970
Un timestamp epoch è un modo compatto di rappresentare un momento come il tempo trascorso da un punto di partenza fisso. Questa guida spiega il tempo Unix, i timestamp POSIX, la data dell'epoch Unix e perché i secondi dal 1970 UTC sono diventati il default nel software.
Cos'è un epoch timestamp?
Un epoch timestamp è un conteggio numerico misurato da un momento di riferimento fisso chiamato epoch. Nell'uso quotidiano degli sviluppatori, epoch timestamp di solito significa timestamp Unix: il numero di secondi dal 1° gennaio 1970 alle 00:00:00 UTC. Un valore 0 è l'epoch Unix esatto. I valori positivi sono dopo il 1970; quelli negativi, prima.
Tempo Unix vs timestamp POSIX
Tempo Unix e timestamp POSIX sono di solito usati in modo intercambiabile nel codice applicativo. Entrambi indicano i secondi trascorsi dall'epoch Unix, ignorando i secondi intercalari per semplificare il tempo civile. Il risultato pratico è un intero stabile che funziona tra sistemi operativi, linguaggi, database, API e file di log.
- Data dell'epoch Unix: 1970-01-01 00:00:00 UTC
- Timestamp Unix 0: l'inizio esatto dell'epoch Unix
- Timestamp POSIX: secondi dall'epoch Unix su sistemi compatibili POSIX
- Millisecondi epoch: lo stesso epoch, ma contato in millisecondi
- Microsecondi o nanosecondi epoch: maggiore precisione per database e tracing
Perché il timestamp dal 1970 è diventato standard
L'epoch Unix era pratico per i primi sistemi Unix ed è diventato una convenzione man mano che le idee di Unix si sono diffuse nelle librerie C, in Linux, nei database, nei server web e nei linguaggi. Un singolo timestamp numerico è più facile da ordinare, confrontare, trasmettere e memorizzare di una stringa di data localizzata.
Esempi di epoch timestamp
Alcuni valori noti rendono più facile ricordare la definizione.
- 0 = 1970-01-01 00:00:00 UTC
- 1 = 1970-01-01 00:00:01 UTC
- 86400 = 1970-01-02 00:00:00 UTC
- 1700000000 = 2023-11-14 22:13:20 UTC
- 1767225600 = 2026-01-01 00:00:00 UTC
FAQ sull'epoch timestamp
- Il tempo epoch è lo stesso del tempo Unix?
- Nell'uso comune degli sviluppatori, sì. Tempo epoch di solito significa tempo Unix: secondi trascorsi dal 1970-01-01 00:00:00 UTC.
- Qual è la definizione di tempo Unix?
- Il tempo Unix è definito come secondi dal 1970-01-01 00:00:00 UTC, senza contare i secondi intercalari.
- Un timestamp POSIX tiene conto del fuso?
- No. Un timestamp POSIX rappresenta un istante. I fusi si applicano solo quando si formatta quell'istante come data leggibile.
- Gli epoch timestamp sono uguali su Windows, Linux e macOS?
- L'epoch Unix (1970-01-01 00:00:00 UTC) è identico tra piattaforme e linguaggi moderni, quindi lo stesso istante dà lo stesso timestamp Unix ovunque. Windows usa internamente il proprio epoch FILETIME (1601), ma i timestamp Unix e POSIX standard usano il 1970.