Què és un timestamp Unix (i per què els desenvolupadors el fan servir)?
Un timestamp Unix és un únic enter: el nombre de segons que han transcorregut des de l’1 de gener de 1970, a les 00:00:00 UTC. Aquest moment s’anomena l’època Unix (Unix epoch), i cada segon des d’aleshores s’ha comptat sense interrupció.
El timestamp actual ara mateix és d’aproximadament 1,750,000,000. Només aquest número ja indica a qualsevol ordinador, base de dades o API quin moment exacte en el temps vols dir — sense ambigüitats.
Per què 1970?
Unix es va desenvolupar a finals dels anys 60 als Bell Labs. Quan els enginyers van necessitar un punt de referència fix per al temps, van triar l’1 de gener de 1970 — l’inici d’una nova dècada, fàcil d’entendre, i convenientment en el passat recent perquè les dates emmagatzemades no requerissin números negatius per a res pràctic en aquell moment.
Va ser una decisió pragmàtica, no basada en un principi. I es va quedar.
El problema que resolen els timestamps Unix
Representar dates com a cadenes llegibles per humans crea ambigüitat a cada capa:
- Desacords de format:
03/04/25és 4 de març o 3 d’abril? És 1925 o 2025? - Confusió de zones horàries: “divendres a les 3 de la tarda” vol dir un moment diferent a Londres que a Tòquio
- Diferències de locale: alguns països escriuen dia-mes-any, d’altres mes-dia-any
Un timestamp Unix evita tot això. 1711929600 és un únic moment inequívoc en el temps independentment d’on siguis o del format que prefereixis. Les màquines s’hi posen d’acord; els humans poden convertir-ho.
Segons, mil·lisegons i microsegons
El timestamp Unix original és en segons. Però diferents sistemes utilitzen diferents resolucions:
| Format | Unitat | Exemple |
|---|---|---|
| Unix (POSIX) | Segons | 1711929600 |
JavaScript Date.now() | Mil·lisegons | 1711929600000 |
Python time.time() | Segons (float) | 1711929600.123 |
| Timestamps de base de dades | Sovint microsegons | 1711929600000000 |
Això és una de les fonts de bugs més comunes quan treballes entre sistemes. Un timestamp de JavaScript passat directament a una funció de Python o Go serà 1,000× massa gran. Comprova sempre la resolució quan travessis límits entre sistemes.
Llegir i escriure timestamps Unix
A JavaScript / TypeScript
// Timestamp actual en segons
Math.floor(Date.now() / 1000)
// Timestamp actual en mil·lisegons
Date.now()
// Convertir timestamp (segons) a objecte Date
new Date(timestamp * 1000)
// Convertir Date a timestamp (segons)
Math.floor(new Date('2024-04-01').getTime() / 1000)
A Python
import time, datetime
# Timestamp actual (float)
time.time()
# Convertir a datetime
datetime.datetime.fromtimestamp(1711929600)
# Convertir datetime a timestamp
datetime.datetime(2024, 4, 1).timestamp()
A SQL (PostgreSQL)
-- Timestamp actual
EXTRACT(EPOCH FROM NOW())::int
-- Convertir a timestamp
TO_TIMESTAMP(1711929600)
Les zones horàries no afecten el timestamp en si
Això és important i sovint es malentén.
Un timestamp Unix sempre representa un moment en UTC. Quan el mostres, el converteixes a una zona horària local. Quan l’emmagatzemes, emmagatzemes el valor UTC. El timestamp en si és neutre respecte a la zona horària.
Això vol dir:
- Dos usuaris en zones horàries diferents que emmagatzemen “ara” obtindran el mateix timestamp
- En mostrar-lo, cada usuari el veu en la seva hora local
- No cal ajustar offsets a la base de dades — només a la capa de presentació
El problema de l’any 2038
Els timestamps Unix emmagatzemats com a enter amb signe de 32 bits només poden comptar fins a 2,147,483,647 segons — que correspon a 19 de gener de 2038, a les 03:14:07 UTC. Després d’això, un comptador de 32 bits es desborda i passa a un gran número negatiu.
Els sistemes que encara emmagatzemen timestamps com a enters de 32 bits fallaran en aquella data. La majoria de sistemes moderns utilitzen enters de 64 bits, que desplacen la data de desbordament fins a l’any 292 mil milions — un límit irrellevant per a usos pràctics.
Si treballes amb sistemes encastats, bases de dades antigues o codi C vell, val la pena comprovar com s’emmagatzemen els timestamps.
Quan fer servir un timestamp Unix
Fes servir un timestamp Unix quan:
- Emmagatzemis dates en una base de dades i vulguis un enter simple i ordenable
- Passis dates entre sistemes o APIs
- Comparis o ordenis esdeveniments cronològicament
- Calculis durades (només cal restar dos timestamps)
- Treballis amb memòries cau o lògiques de caducitat (
expires_at = now + 3600)
Fes servir una cadena de data amb format quan:
- Mostris una data a un usuari
- Registris esdeveniments llegibles per humans
- Treballis en fulls de càlcul o exportacions CSV
Conversions ràpides
| Què | Segons |
|---|---|
| 1 minut | 60 |
| 1 hora | 3,600 |
| 1 dia | 86,400 |
| 1 setmana | 604,800 |
| 30 dies | 2,592,000 |
| 1 any (aprox.) | 31,536,000 |
El Unix Timestamp Converter converteix qualsevol timestamp a una data llegible per humans o converteix una data a timestamp Unix a l’instant.

