El último segundo representable
Un entero de 32 bits con signo puede representar un máximo de 2,147,483,647. Interpretado como segundos Unix, este valor corresponde al 19 de enero de 2038 a las 03:14:07 UTC.
El primer instante fuera del rango es el 19 de enero de 2038 a las 03:14:08 UTC, es decir, 2147483648 segundos.
¿Qué ocurre en caso de desbordamiento?
Si un sistema vuelve al entero mínimo con signo, el valor pasa a ser −2147483648, correspondiente al 13 de diciembre de 1901 a las 20:45:52 UTC. Este comportamiento no es universal: una aplicación puede informar de un error, saturar el valor o presentar un comportamiento indefinido, según el lenguaje y la operación.
new Date(2147483647 * 1000).toISOString();
// 2038-01-19T03:14:07.000Z
new Date(2147483648 * 1000).toISOString();
// 2038-01-19T03:14:08.000ZEn JavaScript, Date no tiene este límite: no almacena segundos como un entero de 32 bits con signo.
¿Qué sistemas conviene revisar?
- Aplicaciones y bibliotecas que todavía utilizan fechas de 32 bits.
- Formatos de archivo, protocolos y campos de base de datos que imponen este tamaño.
- Sistemas embebidos y comunicación con software antiguo.
Un procesador de 64 bits no corrige un campo de protocolo que sigue siendo de 32 bits. Por el contrario, algunas plataformas de 32 bits admiten un time_t de 64 bits.
Cómo preparar una migración
Haz un inventario de las representaciones de fecha, utiliza tipos adecuados para la plataforma y prueba la escritura, lectura e intercambio de valores cerca del límite. Incluye fechas anteriores a 1970 y posteriores a 2038 para detectar conversiones implícitas. Los mecanismos de compatibilidad varían según el sistema y la biblioteca.
Referencias
GNU libc — soporte de tiempo de 64 bits · Rango de fechas de JavaScript
Versión en español publicada el 26 de septiembre de 2026.