Convertidor de marca temporal Unix a data

Converteix una marca temporal Unix en una data i hora llegibles — o qualsevol data de nou a una marca temporal Unix. Admet segons i mil·lisegons.

Comparteix aquesta eina

Incrusta al teu lloc

Què és un timestamp Unix?

Un timestamp Unix, també anomenat Unix time o POSIX time, és el nombre de segons que han transcorregut des de 1970-01-01 00:00:00 UTC, conegut com l'època Unix. És un estàndard molt utilitzat en informàtica perquè representa un instant com un únic enter, cosa que fa que l'emmagatzematge, la comparació i l'aritmètica siguin senzills.

JavaScript treballa internament en mil·lisegons, de manera que Date.now() retorna el timestamp Unix multiplicat per 1000. Moltes API, bases de dades i sistemes backend utilitzen segons. Aquesta eina accepta qualsevol dels dos formats i detecta automàticament si has introduït segons o mil·lisegons segons la mida del número.

Timestamps Unix destacats

TimestampData (UTC)Nota
01970-01-01 00:00:00Època Unix
1,000,000,0002001-09-09 01:46:401.000 milions de segons
2,000,000,0002033-05-18 03:33:202.000 milions de segons
2,147,483,6472038-01-19 03:14:07Problema de l'any 2038 (màxim 32-bit)

Per què 1970?

L'època Unix de l'1 de gener de 1970 es va escollir en part per convenció i en part per restriccions pràctiques. Unix es va desenvolupar a finals dels anys seixanta i principis dels setanta als Bell Labs. Els desenvolupadors necessitaven una data d'inici recent i “rodona” per a la seva representació del temps. L'1 de gener de 1970 era prou recent per ser pràctic i no tenia cap significat tècnic especial — simplement era un punt d'ancoratge convenient.

Altres sistemes utilitzen èpoques diferents: l'època de Windows FILETIME és l'1 de gener de 1601; el temps GPS va començar el 6 de gener de 1980; l'època d'NTP és l'1 de gener de 1900. Quan es converteix entre sistemes, conèixer l'època de cadascun és essencial.

Segons vs mil·lisegons

El timestamp Unix original és en segons. La majoria de llenguatges i sistemes del costat servidor (shell Unix, time.time() de Python, time() de PHP, la majoria de bases de dades) utilitzen segons. Date.now() i new Date().getTime() de JavaScript retornen mil·lisegons. Aquest desajust és una font habitual d'errors quan frontends JavaScript es comuniquen amb API backend.

Un timestamp Unix en segons actualment és un número de 10 dígits (al voltant d'1.700.000.000 a partir de 2023). Un timestamp en mil·lisegons és un número de 13 dígits. El convertidor detecta quin format has introduït segons el nombre de dígits i converteix en conseqüència.

El problema de l'any 2038

Els sistemes que emmagatzemen timestamps Unix com un enter signat de 32 bits només poden representar dates fins a 2,147,483,647 segons després de l'època — és a dir, les 03:14:07 UTC del 19 de gener de 2038. Després d'aquell moment, un enter signat de 32 bits fa overflow i es converteix en un gran número negatiu, representant una data del 1901.

Això de vegades s'anomena el problema “Y2K38” o Unix Millennium Bug. Els sistemes moderns de 64 bits no se'n veuen afectats, ja que un enter signat de 64 bits pot representar timestamps durant aproximadament 292.000 milions d'anys. Tanmateix, sistemes encastats (embedded), bases de dades legacy i programari antic de 32 bits poden continuar sent vulnerables. Moltes indústries — incloses telecomunicacions, banca i control industrial — tenen migracions en marxa per abordar-ho.

Com obtenir el timestamp Unix actual

Llenguatge / entornComanda
JavaScriptMath.floor(Date.now() / 1000)
Pythonimport time; int(time.time())
PHPtime()
Bashdate +%s
SQL (PostgreSQL)EXTRACT(EPOCH FROM NOW())::int
SQL (MySQL)UNIX_TIMESTAMP()
Gotime.Now().Unix()
RustSystemTime::now().duration_since(UNIX_EPOCH).unwrap().as_secs()

Usos pràctics

Desenvolupament d'API: les REST API sovint utilitzen timestamps Unix per a created_at, updated_at i camps de caducitat de tokens. Un timestamp és independent del fus horari i no és ambigu — a diferència de les cadenes de data formatades, que depenen de la configuració regional i de convencions de format.

Caducitat de tokens: els JWT (JSON Web Tokens) utilitzen timestamps Unix per a les claims exp (caducitat) i iat (emissió). Un token caduca quan el timestamp actual supera el valor exp. Calcular caducitats — “aquest token hauria de caducar en 24 hores” — requereix afegir 86.400 segons al timestamp actual.

TTL de memòria cau: la caducitat de la memòria cau sovint es defineix com un timestamp Unix o com un nombre de segons des d'ara. Depurar problemes de memòria cau requereix sovint convertir un timestamp de caducitat emmagatzemat a una data llegible.

Anàlisi de logs: els logs de servidors sovint inclouen timestamps Unix. Convertir-los a dates llegibles és el primer pas per correlacionar entrades de log amb esdeveniments del món real.

Emmagatzematge en bases de dades: emmagatzemar timestamps com enters en lloc de cadenes formatades evita errors de conversió de fus horari i simplifica l'ordenació, les consultes per rang i l'aritmètica. Una consulta per a “tots els registres dels últims 7 dies” es converteix en WHERE created_at > (NOW_UNIX - 604800).

Preguntes freqüents

Què és un Unix timestamp?

Un Unix timestamp és el nombre de segons que han transcorregut des de l’1 de gener de 1970 a les 00:00:00 UTC — un punt de referència anomenat Unix epoch. Representa qualsevol instant en el temps com un únic enter, cosa que facilita emmagatzemar-lo, comparar-lo i fer-hi càlculs. És el format horari estàndard utilitzat en la majoria de sistemes operatius, bases de dades, API i llenguatges de programació.

Com converteixo un Unix timestamp a una data?

Introdueix el timestamp al convertidor i et retornarà la data i l’hora corresponents en UTC i en el teu fus horari local. L’eina detecta automàticament si has introduït segons (un nombre de 10 dígits) o mil·lisegons (un nombre de 13 dígits). També pots convertir en l’altra direcció: selecciona una data i una hora per obtenir el Unix timestamp corresponent.

Quina diferència hi ha entre el temps Unix en segons i en mil·lisegons?

El Unix timestamp original és en segons. La majoria de sistemes del costat servidor — PHP, Python, Go, Bash, bases de dades SQL — fan servir segons. Date.now() i new Date().getTime() de JavaScript retornen mil·lisegons (segons Unix × 1000). Un timestamp en segons té actualment 10 dígits; un timestamp en mil·lisegons en té 13. Confondre’ls és un error habitual quan un frontend en JavaScript envia un timestamp a un backend que espera segons.

Per què el temps Unix comença l’1 de gener de 1970?

La data va ser escollida pels desenvolupadors d’Unix a Bell Labs a principis dels anys 70 com un punt d’inici recent i convenient. No té cap significat especial més enllà de ser una data rodona i propera al moment en què es va desenvolupar el sistema. Altres sistemes utilitzen èpoques diferents: Windows FILETIME comença l’1 de gener de 1601; el temps GPS comença el 6 de gener de 1980; NTP comença l’1 de gener de 1900.

Quin és el problema de l’any 2038?

Els sistemes que emmagatzemen Unix timestamps com un enter signat de 32 bits només poden representar dates fins al 19 de gener de 2038 (timestamp 2.147.483.647). Després d’això, el valor desborda cap a un nombre negatiu gran, que representa una data el 1901. Els sistemes moderns de 64 bits no se’n veuen afectats. Tanmateix, sistemes encastats antics, bases de dades més velles i programari de 32 bits poden ser vulnerables i requerir migració abans d’aquesta data.

Com obtinc el Unix timestamp actual en el meu llenguatge de programació?

JavaScript: Math.floor(Date.now() / 1000). Python: import time; int(time.time()). PHP: time(). Bash: date +%s. PostgreSQL: EXTRACT(EPOCH FROM NOW())::int. MySQL: UNIX_TIMESTAMP(). Go: time.Now().Unix(). Tots aquests retornen l’hora actual com a segons des de l’Unix epoch.

Articles relacionats