Convertitore timestamp Unix

  

 

Dimensione

Premi Esc per uscire dallo schermo intero

Come funziona

  1. Leggi l’ora attuale

    Il numero grande è l’ora Unix in questo momento, in secondi. Avanza ogni secondo. Tocca Copia per prenderlo.

  2. Converti un timestamp

    Scegli «Da timestamp a data» e incolla un numero. 10 cifre vengono lette come secondi, 13 come millisecondi. Ottieni l’ora locale, l’UTC e il formato ISO 8601.

  3. Converti una data

    Scegli «Da data a timestamp», imposta data e ora, poi ora locale o UTC. Il timestamp è pronto da copiare.

Hai un suggerimento per migliorarlo?

Creiamo strumenti il più possibile semplici e intuitivi, con qualche chicca qua e là. Dicci cosa renderebbe migliore questo.

Che cos’è un timestamp Unix?

Un timestamp Unix, detto anche tempo Unix, epoch time o tempo POSIX, è il numero di secondi trascorsi dal 1° gennaio 1970 alle 00:00:00 UTC. Quell’istante si chiama «epoch». Un secondo dopo il contatore era a 1, un giorno dopo a 86.400.

Lo stesso istante ha lo stesso timestamp in tutto il mondo. Fusi orari e ora legale entrano in gioco solo quando trasformi il numero in una data leggibile da una persona. Per questo server, database, log e API lo adorano: un solo intero, nessun fuso orario, facile da ordinare e da sottrarre.

Secondi o millisecondi?

La maggior parte dei sistemi conta in secondi: oggi è un numero di 10 cifre. JavaScript, Java e molte API contano in millisecondi: 13 cifre. Alcuni database e strumenti di tracciamento scendono ai microsecondi (16 cifre) o ai nanosecondi (19 cifre).

Il convertitore qui sopra guarda la lunghezza del numero e sceglie l’unità al posto tuo. Se la data cade nel 1970 o in un futuro lontanissimo, l’unità era probabilmente sbagliata: dividi o moltiplica per 1000.

TimestampData e ora (UTC)Nota
01° gennaio 1970, 00:00:00L’epoch
1.000.000.0009 settembre 2001, 01:46:40Il primo timestamp a 10 cifre
1.234.567.89013 febbraio 2009, 23:31:30Festeggiato dagli sviluppatori
1.700.000.00014 novembre 2023, 22:13:20Un numero tondo recente
2.000.000.00018 maggio 2033, 03:33:20Il prossimo grande numero tondo
2.147.483.64719 gennaio 2038, 03:14:07L’ultimo secondo del tempo a 32 bit con segno

Il problema dell’anno 2038

Molti sistemi vecchi salvano il timestamp in un intero a 32 bit con segno. Il valore più grande che può contenere è 2.147.483.647, cioè il 19 gennaio 2038 alle 03:14:07 UTC. Un secondo dopo il contatore va in overflow e passa a −2.147.483.648: quei sistemi leggono allora il 13 dicembre 1901 alle 20:45:52.

I sistemi moderni a 64 bit sono al sicuro per miliardi di anni. Il rischio sta nei dispositivi embedded, nei vecchi formati di file, nei database con colonne a 32 bit e nel codice che converte l’ora in un intero a 32 bit. Su Linux, le piattaforme a 32 bit hanno ricevuto il tempo a 64 bit con il kernel 5.6 nel 2020 e con la glibc 2.34 nel 2021, ma i programmi vanno ancora ricompilati per sfruttarlo. Un buon test: salva una data del 2040 e rileggila.

Il tempo Unix e i secondi intercalari

Il tempo Unix fa finta che ogni giorno duri esattamente 86.400 secondi. Il tempo UTC reale, invece, ha ricevuto 27 secondi intercalari dal 1972, l’ultimo il 31 dicembre 2016. Durante un secondo intercalare il tempo Unix di solito ripete un secondo, oppure allunga di poco i secondi intorno, una tecnica chiamata smearing usata da alcuni grandi fornitori cloud. Un timestamp Unix quindi non è un conteggio rigoroso dei secondi trascorsi: è un numero di giorni moltiplicato per 86.400, più i secondi del giorno in corso.

In pratica conta di rado, e conterà sempre meno. Nel novembre 2022 la Conferenza generale dei pesi e delle misure ha deciso di allargare entro il 2035 lo scarto ammesso tra l’UTC e la rotazione della Terra, il che di fatto mette fine ai secondi intercalari. L’IERS, il servizio internazionale che segue la rotazione terrestre, ha già annunciato che a fine dicembre 2026 non ci sarà alcun secondo intercalare.

Fusi orari e ora legale

Un timestamp indica un istante, non l’ora segnata da un orologio. Al timestamp 1.700.000.000 erano le 22:13 a Londra, le 23:13 a Roma e le 17:13 a New York: tre ore locali, un solo numero. Quando salvi delle date, conserva il timestamp (o una data ISO 8601 con «Z») e passa all’ora locale solo per mostrarla.

L’ora legale lo dimostra bene. Nella notte del ritorno all’ora solare, a fine ottobre, in Italia l’ora locale dalle 2:00 alle 3:00 si ripete due volte: un’ora locale da sola è quindi ambigua. I timestamp invece continuano a salire secondo dopo secondo, senza salti. Nella notte del passaggio all’ora legale, a fine marzo, un’ora locale sparisce, ma non manca nessun timestamp.

Timestamp o ISO 8601?

L’ISO 8601 è il gemello leggibile del timestamp: 2023-11-14T22:13:20Z indica lo stesso istante di 1.700.000.000. Il timestamp è compatto e facile da confrontare; la data ISO si legge bene in un log o in un file JSON. Entrambi sono senza ambiguità, purché la data ISO porti la «Z» o uno scarto come +01:00.

Come ottenere un timestamp Unix nel codice

JavaScript

// Ora Unix attuale in secondi (Date.now() è in millisecondi)
Math.floor(Date.now() / 1000)

// Da timestamp a data
new Date(1700000000 * 1000).toISOString()   // "2023-11-14T22:13:20.000Z"

// Da data a timestamp
Date.UTC(2026, 0, 1) / 1000                  // 1767225600

Python

import time
from datetime import datetime, timezone

int(time.time())                                       # ora Unix attuale
datetime.fromtimestamp(1700000000, tz=timezone.utc)    # 2023-11-14 22:13:20+00:00
int(datetime(2026, 1, 1, tzinfo=timezone.utc).timestamp())   # 1767225600

PHP

time();                                   // ora Unix attuale
gmdate('Y-m-d H:i:s', 1700000000);        // "2023-11-14 22:13:20"
strtotime('2026-01-01 00:00:00 UTC');     // 1767225600

SQL

-- MySQL (FROM_UNIXTIME usa il fuso orario della sessione)
SELECT UNIX_TIMESTAMP();
SELECT FROM_UNIXTIME(1700000000);

-- PostgreSQL
SELECT EXTRACT(EPOCH FROM now())::bigint;
SELECT to_timestamp(1700000000);

-- SQLite
SELECT strftime('%s', 'now');
SELECT datetime(1700000000, 'unixepoch');

Shell

date +%s                              # ora Unix attuale
date -u -d @1700000000                # Linux (date GNU)
date -u -r 1700000000                 # macOS e BSD
date -u -d '2026-01-01 00:00' +%s     # 1767225600 (date GNU)

Gli errori più comuni

  • L’ora locale per sbaglio. Creare una data da «2026-01-01 00:00» senza fuso usa l’ora locale del computer. Aggiungi «Z» o «UTC», oppure usa la scelta UTC qui sopra, quando intendi l’UTC.
  • Secondi letti come millisecondi. Un numero di 10 cifre letto in millisecondi cade nel gennaio 1970. Un numero di 13 cifre letto in secondi cade tra decine di migliaia di anni.
  • Timestamp negativi. Le date prima del 1970 sono numeri negativi: −86.400 corrisponde al 31 dicembre 1969. Quasi tutti gli strumenti moderni li gestiscono, alcuni vecchi no.

Per sapere che ora è in un’altra città in un dato istante, usa il convertitore di fusi orari. Per contare i giorni tra due date c’è il calcolatore di date, e per le durate in ore e minuti il calcolo ore e minuti.

Domande

Qual è il timestamp Unix attuale?

È il numero grande in cima a questa pagina, aggiornato ogni secondo sul tuo dispositivo. Conta i secondi trascorsi dal 1° gennaio 1970 alle 00:00:00 UTC.

Come si converte un timestamp Unix in data?

Incollalo in «Da timestamp a data». Nel codice, moltiplica i secondi per 1000 e passali a new Date() in JavaScript, oppure usa datetime.fromtimestamp() in Python.

Il timestamp Unix è in UTC?

Sì. Il conteggio parte dalla mezzanotte UTC del 1° gennaio 1970, e lo stesso istante ha lo stesso timestamp in tutti i fusi orari. Solo la sua visualizzazione come data dipende dal fuso.

Perché il mio timestamp ha 13 cifre?

È in millisecondi, come in JavaScript, in Java e in molte API. Dividi per 1000 per avere i secondi. Il convertitore lo riconosce da solo.

Che cosa succede nel 2038?

Il 19 gennaio 2038 alle 03:14:07 UTC il timestamp supera 2.147.483.647, il massimo di un intero a 32 bit con segno. I sistemi che salvano ancora l’ora così torneranno al 1901. I sistemi a 64 bit non sono coinvolti.

Il tempo Unix conta i secondi intercalari?

No. Considera ogni giorno lungo esattamente 86.400 secondi, quindi i 27 secondi intercalari aggiunti all’UTC dal 1972 non vengono contati in più.

Come ottengo il timestamp attuale in JavaScript?

Date.now() restituisce i millisecondi. Per i secondi usa Math.floor(Date.now() / 1000).

Come ottengo l’ora Unix da terminale?

Scrivi date +%s su Linux o macOS. Per leggere un timestamp: date -u -d @1700000000 su Linux, oppure date -u -r 1700000000 su macOS.

Un timestamp Unix può essere negativo?

Sì. I valori negativi sono date prima del 1970: −86.400 corrisponde al 31 dicembre 1969 alle 00:00 UTC.