Converter un timestamp Unix en data e unha data en timestamp
Publicada o · Actualizada o 2 min de lectura
Un timestamp Unix conta o tempo transcorrido desde o 1 de xaneiro de 1970 á medianoite en hora universal. Dúas preguntas deciden a data resultante: a unidade do número e o fuso horario no que le o resultado.
Un valor de referencia
Converter un timestamp Unix dá tres lecturas do mesmo instante. Para 1700000000, cun navegador configurado coa hora de París:
| Lectura | Resultado |
|---|---|
| Data UTC | Tue, 14 Nov 2023 22:13:20 GMT |
| Data local | 14 de novembro de 2023 ás 23:13:20 UTC+1 |
| ISO | 2023-11-14T22:13:20.000Z |
A hora local segue o fuso horario do navegador: unha hora máis en París no inverno. O mesmo timestamp é un único instante, lido en dous fusos horarios.
A unidade recoñécese polo número de díxitos
O axuste por defecto recoñece a unidade pola lonxitude do número. Os tres valores seguintes designan o mesmo instante, coa precisión correspondente.
| Número | Díxitos | Unidade recoñecida | Instante obtido |
|---|---|---|---|
| 1700000000 | 10 | Segundos | 14 nov. 2023, 22:13:20 UTC |
| 1700000000000 | 13 | Milisegundos | 14 nov. 2023, 22:13:20 UTC |
| 1700000000123456 | 16 | Microsegundos | 14 nov. 2023, 22:13:20,123 UTC |
A regra: ata 11 díxitos, segundos; de 12 a 14, milisegundos; 15 e 16, microsegundos. O axuste «milisegundos» forza esa unidade.
A trampa da regra
Como a unidade se deduce da lonxitude, un valor ambiguo lese dun só xeito: 10000000000 (11 díxitos) dá o 20 de novembro de 2286, e 100000000000 (12 díxitos) dá o 3 de marzo de 1973. Un timestamp en milisegundos anterior a marzo de 1973 ten 11 díxitos ou menos, e leríase como segundos: force entón o axuste «milisegundos».
Valores anteriores a 1970 e o límite de 2038
Un número negativo designa un instante anterior a 1970: −1 dá o 31 de decembro de 1969 ás 23:59:59 UTC, e 0 dá o 1 de xaneiro de 1970 á medianoite.
O número 2147483647 é o maior que cabe nun enteiro de 32 bits con signo: dá o 19 de xaneiro de 2038 ás 03:14:07 UTC. O número seguinte, 2147483648, dá as 03:14:08: a ferramenta continúa sen límite, pero un sistema que almacena a hora en 32 bits non pode.
Converter unha data en timestamp
Introduza unha data en lugar dun número: a ferramenta dá o timestamp en segundos e en milisegundos.
| Entrada | Timestamp en segundos | Lectura |
|---|---|---|
| 2026-01-01 | 1767225600 | Medianoite en hora universal, sen fuso horario indicado |
| 2026-01-01T10:30:00+01:00 | 1767259800 | 10:30 en París, é dicir, 09:30 en hora universal |
| 2024-02-29 | 1709164800 | Ano bisesto aceptado |
Unha data sen fuso horario lese en hora universal, non en hora local: a ferramenta indícao no resultado. Unha data que non existe, como o 30 de febreiro de 2026, rexéitase cunha mensaxe.
Erros frecuentes
- Ler milisegundos como segundos: a data cae miles de anos demasiado lonxe.
- Esquecer o fuso horario: unha data lida como local e enviada despois como universal desprázase unha ou varias horas.
- Escribir unha data sen fuso horario pensando na hora local, cando se vai ler en UTC.
Para contar os días entre dúas datas, vexa Contar os días entre dúas datas.
Comprobar unha conversión
- Reláa a liña UTC, que non depende do aparello.
- Comprobe a unidade anunciada na primeira liña do resultado.
- Volva converter a data resultante: debería recuperar o número de partida.
