Vai al contenuto principale
riqo.ioStrumenti per grandi idee

Unix timestamp, Epoch e rappresentazione del tempo

Come rappresentare istanti nel tempo, distinguere UTC, offset e timezone e gestire secondi, millisecondi e ISO 8601.

Epoch e istante assoluto

Il Unix time misura il tempo rispetto all'epoch 1970-01-01T00:00:00Z, tipicamente come numero di secondi trascorsi. Rappresenta un istante sulla timeline e non contiene da solo una zona geografica o una formattazione locale.

Questa neutralità rende il timestamp pratico per storage, protocolli e confronti. La presentazione per una persona richiede invece una conversione in calendario, locale e timezone appropriati.

Secondi, millisecondi e unità

Sistemi diversi usano secondi, millisecondi, microsecondi o nanosecondi. Lo stesso numero interpretato con l'unità sbagliata può spostare una data di ordini di grandezza, quindi l'unità deve far parte del contratto.

Molte API JavaScript usano millisecondi, mentre strumenti Unix tradizionali espongono secondi. Evita euristiche basate solo sul numero di cifre quando il dato ha valore operativo.

UTC, offset e timezone

UTC è il riferimento temporale globale; un offset come +02:00 indica lo scarto da UTC in un particolare istante. Una timezone geografica come Europe/Rome contiene invece regole storiche e future sugli offset, incluse transizioni legali e ora estiva.

Offset e timezone non sono sinonimi: conoscere +02:00 non dice quali regole applicare in un'altra data. Per eventi ricorrenti legati a un luogo serve normalmente l'identificatore di timezone, non solo un offset fisso.

DST e orari locali ambigui

Durante il passaggio all'ora legale alcuni orari locali non esistono; al ritorno all'ora solare alcuni si verificano due volte. Un semplice datetime locale senza timezone può quindi essere ambiguo o impossibile.

Per registrare eventi accaduti salva un istante assoluto; per appuntamenti futuri legati a regole civili conserva anche la timezone e la semantica locale. Sono problemi diversi e richiedono modelli diversi.

ISO 8601 e scambio leggibile

ISO 8601 offre rappresentazioni testuali ordinate e comprensibili, ad esempio 2026-08-29T21:30:00Z o con offset esplicito. È spesso preferibile nei log e nelle API quando la leggibilità umana conta.

Specificare Z o un offset evita date localmente interpretabili in modi diversi. Anche con ISO 8601 bisogna però stabilire precisione, timezone policy e significato dei campi privi di offset.

Leap seconds, range e best practice

Il modello Unix time comunemente usato dai sistemi POSIX non rappresenta i leap second come una sequenza lineare distinta e implementazioni diverse possono gestirli o smussarli in modi differenti. Applicazioni scientifiche possono richiedere scale temporali più rigorose.

Usa librerie timezone aggiornate, conserva l'unità esplicitamente e non fare aritmetica civile sommando semplicemente secondi quando il requisito è 'stessa ora locale domani'. Tempo macchina e calendario civile devono restare concetti separati.

Guide correlate

UTC, offset, timezone, DST e ISO 8601

Come distinguere istanti assoluti, offset e regole geografiche per rappresentare correttamente il tempo nei sistemi software.