JS: Math.floor(Date.now()/1000) | Python: int(time.time()) | PHP: time() | Bash: date +%s
// Secondi
Math.floor(Date.now() / 1000)
// Millisecondi
Date.now()import time
# Secondi
int(time.time())
# Millisecondi
int(time.time() * 1000)// Secondi
time();
// Millisecondi
round(microtime(true) * 1000);# Secondi
date +%s
# Millisecondi
date +%s%3N-- Timestamp corrente
UNIX_TIMESTAMP()
-- Data a timestamp
UNIX_TIMESTAMP('2026-01-01')// Secondi
System.currentTimeMillis() / 1000L
// Millisecondi
System.currentTimeMillis()| Durata | Secondi | Calcolo |
|---|---|---|
| 1 minuto | 60 | 60 |
| 1 ora | 3.600 | 60 x 60 |
| 1 giorno | 86.400 | 60 x 60 x 24 |
| 1 settimana | 604.800 | 86.400 x 7 |
| 1 mese (30,44 gg) | 2.629.743 | 86.400 x 30,44 |
| 1 anno (365,24 gg) | 31.556.926 | 86.400 x 365,24 |
| Max int 32-bit (2038) | 2.147.483.647 | 19 gen 2038 03:14:07 UTC |
Il timestamp Unix (detto anche epoch time o POSIX time) e il numero di secondi trascorsi dal 1 gennaio 1970 alle 00:00:00 UTC, indipendentemente dal fuso orario. E lo standard universale per rappresentare istanti nel tempo nei sistemi informatici: database, API, log, file system, JWT token e molto altro.
Il timestamp Unix classico usa i secondi (10 cifre, es. 1700000000). JavaScript utilizza i millisecondi (13 cifre, es. 1700000000000). Un errore comune e dimenticare di dividere o moltiplicare per 1000 quando si passa da un sistema all'altro.
I sistemi che usano interi a 32 bit con segno possono rappresentare timestamp fino al 19 gennaio 2038 alle 03:14:07 UTC (valore massimo: 2.147.483.647). Oltre quel limite l'intero va in overflow. I sistemi moderni a 64 bit non hanno questo problema e possono rappresentare date per miliardi di anni nel futuro.
Il timestamp Unix e il numero di secondi trascorsi dal 1 gennaio 1970 alle 00:00:00 UTC. E completamente indipendente dal fuso orario: il valore 1700000000 corrisponde allo stesso istante fisico in tutto il mondo, che tu sia a Roma, Tokyo o New York. Viene usato ovunque nei sistemi informatici: database, API REST, JWT token, log di sistema, file system.
new Date(timestamp * 1000) - nota: JS usa i millisecondi, quindi moltiplica per 1000.
Esempi: new Date(1700000000 * 1000).toISOString() restituisce la data in formato ISO 8601. new Date(1700000000 * 1000).toLocaleString('it-IT') la restituisce in italiano.
Per ottenere il timestamp corrente: Math.floor(Date.now() / 1000)
Il timestamp Unix classico conta i secondi: ha 10 cifre (es. 1700000000). JavaScript usa i millisecondi: ha 13 cifre (es. 1700000000000).
Per convertire: ms / 1000 = secondi e viceversa secondi * 1000 = ms. Se un timestamp ha 13 cifre e quasi certamente in millisecondi.
I sistemi che usano interi firmati a 32 bit raggiungono il loro valore massimo (2.147.483.647) il 19 gennaio 2038 alle 03:14:07 UTC. Oltre questo punto il valore va in overflow e diventa negativo, causando date errate.
I sistemi a 64 bit non hanno questo problema: possono rappresentare timestamp fino a circa 292 miliardi di anni nel futuro. La maggior parte dei sistemi moderni usa gia 64 bit, ma esistono ancora sistemi embedded e legacy a 32 bit che dovranno essere aggiornati.
Con il modulo datetime:
from datetime import datetime, timezone
dt = datetime(2026, 1, 1, 0, 0, 0, tzinfo=timezone.utc)
ts = int(dt.timestamp())
Con il modulo time per il timestamp corrente: import time; int(time.time())
ISO 8601 e lo standard internazionale per rappresentare date e orari: 2026-01-15T10:30:00Z (la Z indica UTC). In JavaScript si ottiene con new Date(ts*1000).toISOString().
E il formato raccomandato per le API REST perche e non ambiguo, leggibile da macchine e umani, e include il fuso orario. Evita formati come "15/01/2026" che sono ambigui tra paesi diversi.