Guía
Timestamps negativos y fechas anteriores a 1970
Aprende qué significa un timestamp Unix negativo, cómo calcular fechas anteriores al epoch y qué límites comprobar.
por Tools in a Tab · Publicado el · Revisado el
Respuesta breve
Un timestamp negativo representa un instante anterior al Unix epoch. El signo
no indica que el dato esté corrupto: señala una distancia hacia atrás desde
1970-01-01 00:00:00 UTC.
Ejemplos exactos
| Timestamp en segundos | Fecha UTC |
|---|---|
0 |
1970-01-01 00:00:00 |
-1 |
1969-12-31 23:59:59 |
-86400 |
1969-12-31 00:00:00 |
-2208988800 |
1900-01-01 00:00:00 |
La aritmética es simétrica alrededor de cero. En milisegundos, el segundo
anterior al epoch es -1000; el milisegundo anterior es -1.
Por qué algunos sistemas los rechazan
Unix time es un modelo, pero cada base de datos, lenguaje o protocolo decide su rango. Un campo sin signo no puede almacenar negativos. Bibliotecas antiguas o sistemas que usan enteros de 32 bits pueden imponer límites más estrechos. Una interfaz también puede restringir años aunque su representación interna admita más.
Por eso hay que separar dos preguntas:
- ¿La fecha tiene un timestamp matemáticamente válido?
- ¿El sistema de destino admite ese valor y su rango?
El conversor de timestamp acepta fechas anteriores a 1970 dentro del rango documentado y calcula con enteros antes de crear la fecha.
Calendarios y fechas históricas
Convertir una fecha muy antigua no prueba que el calendario civil de aquel lugar se escribiera entonces de la misma manera. Las APIs modernas suelen extender el calendario gregoriano hacia atrás de forma uniforme. Esto sirve para aritmética técnica, pero una investigación histórica puede requerir reglas locales sobre calendarios y transiciones.
Comprobaciones recomendadas
- Conserva el signo durante serialización y transporte.
- Declara segundos o milisegundos.
- Prueba
-1,0y1como frontera. - Comprueba el rango del almacenamiento receptor.
- Muestra siempre la fecha UTC de verificación.
Fuente primaria
La especificación de valores de tiempo de ECMAScript define el epoch, los milisegundos y los días anteriores mediante valores negativos.