Back

¿Se detendrán las computadoras en 2038? (El problema Y2K38)

A finales de 1999, el mundo temía el 'Efecto 2000'. Se esperaba que las computadoras que almacenaban años como dos dígitos (99) interpretaran el 2000 como 1900, causando el caos.

Ahora, se acerca un problema similar, quizás más grave.

Es el Problema del Año 2038.

1. Tiempo Unix

¿Cómo almacenan el tiempo las computadoras? La mayoría de los sistemas utilizan el Tiempo Unix.

Esto cuenta el número de segundos que han transcurrido desde el 1 de enero de 1970, 00:00:00 (UTC).

Por ejemplo, al momento de escribir esto, han pasado unos 1.7 mil millones de segundos desde 1970.

2. El Límite de 32 bits

El problema es que muchos sistemas y software antiguos utilizan un Entero de 32 bits con signo para almacenar este valor.

El valor máximo que puede contener un entero de 32 bits es 2,147,483,647.

Convertido a Tiempo Unix, esto corresponde exactamente al 19 de enero de 2038, 03:14:07 (UTC).

3. Cuando Llegue Ese Día

¿Qué sucede 1 segundo después de este tiempo?

El número desbordará su valor máximo y volverá al valor mínimo, -2,147,483,648.

El sistema interpretará este tiempo como 13 de diciembre de 1901.

Esto podría causar:

  • Fallos en los cálculos de fechas de la base de datos.
  • Sistemas de programación reservando citas en el pasado.
  • Dispositivos integrados o servidores heredados fallando.

4. La Solución

La solución es simple pero costosa: extender la variable de tiempo a 64 bits.

El valor máximo de un entero de 64 bits es de unos 9 quintillones. Esto puede representar un lapso de tiempo mucho más largo que la edad del universo (unos 290 mil millones de años), haciéndolo efectivamente seguro para siempre.

Los sistemas operativos y lenguajes modernos de 64 bits ya utilizan tiempo de 64 bits. La preocupación radica en los dispositivos integrados de 32 bits y el código heredado que aún está en funcionamiento.

Conclusión

2038 parece lejano, pero los sistemas que tratan con contratos a largo plazo o pensiones ya podrían estar encontrando problemas.

Como desarrollador, vale la pena comprobar si las variables de fecha en tu código son de 32 bits o 64 bits. Es el primer paso para prevenir un desastre futuro.

TechUnixTimeBug

Explora herramientas relacionadas

Prueba estas herramientas gratuitas de Pockit