Convertir un timestamp Unix en data i una data en timestamp
Publicat el · Actualitzat el 3 min de lectura
Un timestamp Unix compta el temps transcorregut des de l’1 de gener de 1970 a mitjanit en hora universal. Dues preguntes decideixen la data resultant: la unitat del nombre i el fus horari en què llegiu el resultat.
Un valor de referència
Convertir timestamp Unix dona tres lectures del mateix instant. Per a 1700000000, amb un navegador configurat a l’hora de París:
| Lectura | Resultat |
|---|---|
| Data UTC | Tue, 14 Nov 2023 22:13:20 GMT |
| Data local | 14 de novembre de 2023 a les 23:13:20 UTC+1 |
| ISO | 2023-11-14T22:13:20.000Z |
L’hora local segueix el fus horari del navegador: una hora més a París a l’hivern. El mateix timestamp és un únic instant, llegit en dos fusos horaris.
La unitat es reconeix pel nombre de xifres
El paràmetre per defecte reconeix la unitat per la longitud del nombre. Els tres valors següents designen el mateix instant, amb la precisió corresponent.
| Nombre | Xifres | Unitat reconeguda | Instant obtingut |
|---|---|---|---|
| 1700000000 | 10 | Segons | 14 nov. 2023, 22:13:20 UTC |
| 1700000000000 | 13 | Mil·lisegons | 14 nov. 2023, 22:13:20 UTC |
| 1700000000123456 | 16 | Microsegons | 14 nov. 2023, 22:13:20,123 UTC |
La regla: fins a 11 xifres, segons; de 12 a 14, mil·lisegons; 15 i 16, microsegons. El paràmetre «mil·lisegons» força aquesta unitat.
La trampa de la regla
Com que la unitat es dedueix de la longitud, un valor ambigu es llegeix d’una sola manera: 10000000000 (11 xifres) dona el 20 de novembre de 2286, i 100000000000 (12 xifres) dona el 3 de març de 1973. Un timestamp en mil·lisegons anterior al març de 1973 té 11 xifres o menys, i es llegiria com a segons: forceu llavors el paràmetre «mil·lisegons».
Valors anteriors a 1970 i el límit de 2038
Un nombre negatiu designa un instant anterior a 1970: −1 dona el 31 de desembre de 1969 a les 23:59:59 UTC, i 0 dona l’1 de gener de 1970 a mitjanit.
El nombre 2147483647 és el més gran que cap en un enter de 32 bits amb signe: dona el 19 de gener de 2038 a les 03:14:07 UTC. El nombre següent, 2147483648, dona les 03:14:08: l’eina continua sense límit, però un sistema que emmagatzema l’hora en 32 bits no pot.
Convertir una data en timestamp
Introduïu una data en lloc d’un nombre: l’eina dona el timestamp en segons i en mil·lisegons.
| Entrada | Timestamp en segons | Lectura |
|---|---|---|
| 2026-01-01 | 1767225600 | Mitjanit en hora universal, sense fus horari indicat |
| 2026-01-01T10:30:00+01:00 | 1767259800 | 10:30 a París, és a dir, 09:30 en hora universal |
| 2024-02-29 | 1709164800 | Any de traspàs acceptat |
Una data sense fus horari es llegeix en hora universal, no en hora local: l’eina ho indica al resultat. Una data que no existeix, com el 30 de febrer de 2026, es rebutja amb un missatge.
Errors freqüents
- Llegir mil·lisegons com a segons: la data cau milers d’anys massa lluny.
- Oblidar el fus horari: una data llegida com a local i enviada després com a universal es desplaça una o diverses hores.
- Escriure una data sense fus horari pensant en l’hora local, quan es llegirà en UTC.
Per comptar els dies entre dues dates, vegeu Comptar els dies entre dues dates.
Comprovar una conversió
- Rellegiu la línia UTC, que no depèn de l’aparell.
- Comproveu la unitat anunciada a la primera línia del resultat.
- Torneu a convertir la data resultant: hauríeu de recuperar el nombre de partida.
