Conversione delle marche temporali Unix

Converte in entrambi i sensi fra la marca temporale Unix, in secondi o millesimi dall'epoca, e la data leggibile da una persona. Uno strumento per sviluppatori con orologio mondiale, inserimento immediato dell'ora corrente e visualizzazione su più fusi orari.

Nozioni di base sulla marca temporale Unix

La marca temporale Unix esprime un istante come numero di secondi trascorsi dalla mezzanotte del primo gennaio 1970 in tempo coordinato universale, la cosiddetta epoca Unix. La tabella riporta alcuni valori significativi con la data corrispondente.

Marca temporale (secondi) Data e ora in UTC Note
0 1970-01-01T00:00:00Z Epoca Unix, origine delle marche temporali
1000000000 2001-09-09T01:46:40Z Il momento in cui si raggiunse il miliardo di secondi, detto Unix Billennium
1234567890 2009-02-13T23:31:30Z Valore divenuto celebre perché le sue cifre decimali si succedono da 1 a 9
2147483647 2038-01-19T03:14:07Z Il problema del 2038: valore massimo di un intero con segno a 32 bit, che un secondo dopo trabocca

Consigli per l'uso

  • Dieci cifre indicano di norma i secondi, tredici i millesimi di secondo. Lasciando il riconoscimento automatico, l'unità viene dedotta dal numero di cifre.
  • Potete incollare senz'altro la marca temporale presa dai registri di un servente o dalla risposta di un'interfaccia e vederla subito espressa in più fusi orari.
  • Nella conversione dalla data alla marca temporale ricordate che occorre indicare esplicitamente a quale fuso orario si riferisca la data inserita.
  • Il formato ISO 8601 in tempo coordinato universale è interpretabile direttamente da molti linguaggi e molte basi di dati: è quindi un utile riferimento nella ricerca nei registri e nella progettazione delle interfacce.
  • Il pulsante per inserire l'ora corrente riporta immediatamente nel campo il momento presente, letto dall'orologio del navigatore.

Domande frequenti

È il modo di esprimere un istante come numero di secondi trascorsi dalla mezzanotte del primo gennaio 1970 in tempo coordinato universale, la cosiddetta epoca Unix. Poiché individua univocamente un momento con un solo numero, indipendente dal fuso orario, è largamente adottata come rappresentazione standard negli scambi fra macchine: registri dei serventi, basi di dati e interfacce di programmazione.

È il difetto per cui i sistemi che trattano la marca temporale con un intero con segno a 32 bit traboccheranno un secondo dopo le 03:14:07 del 19 gennaio 2038 in tempo coordinato universale, cioè dopo il valore massimo di 2.147.483.647 secondi, riportando la data indietro al 1901 circa. La maggior parte dei sistemi odierni usa interi a 64 bit e non ne risente, ma nei dispositivi incorporati e nei sistemi datati la questione resta attuale.

Le marche temporali degli anni Venti e Trenta di questo secolo hanno all'incirca dieci cifre se espresse in secondi e tredici se espresse in millesimi. La modalità di riconoscimento automatico di questo strumento sfrutta questa differenza, ma per esserne certi conviene consultare le specifiche del dato d'origine o la documentazione dell'interfaccia.

Non esiste una ragione unica documentata. Si ritiene che abbiano pesato lo sviluppo di Unix stesso, avvenuto fra il 1969 e il 1970, e la scelta di un anno tondo e maneggevole, dati i limiti di memoria delle macchine dell'epoca. Quella data, detta epoca Unix, è poi divenuta lo standard di fatto ripreso da quasi tutti i linguaggi e i sistemi operativi.

I valori negativi indicano istanti anteriori al primo gennaio 1970. Per esempio la marca temporale -86400 corrisponde alla mezzanotte del 31 dicembre 1969 in tempo coordinato universale. I sistemi che trattano date storiche o date di nascita anteriori al 1970 usano talvolta marche temporali negative.
Tool-kun

A proposito — perché gli elaboratori contano il tempo in secondi

Le persone indicano un istante combinando anno, mese, giorno e ora, come «12 luglio 2026, ore 17.08», ma per una macchina questa forma è scomoda: bisogna tener conto ogni volta di regole intricate — anni bisestili, fusi orari, ora legale — e perfino calcolare la differenza fra due istanti richiede un'elaborazione laboriosa. Di qui l'idea di esprimere il tempo con un solo numero, i secondi trascorsi da un istante di riferimento: è la marca temporale Unix.

Il vantaggio maggiore di trattare il tempo come un unico numero intero è che confronti, somme e sottrazioni si riducono a semplici operazioni aritmetiche. Per sapere quanti secondi separino due eventi basta sottrarre le marche temporali, senza curarsi degli anni bisestili né della diversa lunghezza dei mesi. Proprio per questa semplicità la marca temporale è stata adottata come rappresentazione interna non soltanto dai sistemi Unix, ma anche da Windows, dalle basi di dati e da molti linguaggi di programmazione, diventando lo standard mondiale di fatto.

D'altra parte, l'idea di un numero unico indipendente dal fuso orario comporta che la conversione al fuso avvenga soltanto al momento della lettura da parte di una persona. La stessa marca temporale corrisponde a piena notte a Tokyo e al primo pomeriggio del giorno precedente a New York: la data che si vede cambia radicalmente secondo il fuso scelto. Molti dei difetti che nell'analisi dei registri o nella messa a punto delle integrazioni fra interfacce si manifestano come «orari sfasati» nascono proprio dalla dimenticanza di questa conversione.