La gran mayoría de sistemas informáticos tienen implementado un reloj interno cuyo funcionamiento es el siguiente: tomando una fecha base, cuenta los segundos que han pasado desde entonces y los almacena en una variable. Para conocer la fecha, se transforman los segundos almacenados por esa variable en la fecha completa (hora-minuto-segundo; día-mes-año). Esto se consigue a través de un algoritmo muy sencillo, y funciona perfectamente. ¿Qué ocurre entonces?
El problema está en la variable que almacena los segundos. En algunos sistemas, esa variable es de tipo entero y permite almacenar números enteros entre el rango [2E31, 2E31 - 1]. Esto implica que cuando el número de segundos transcurridos desde la fecha inicial sea 2E31 - 1, el sistema puede desbordarse y las consecuencias podrían ser fechas totalmente incorrectas.
Muchos de los sistemas, además de tener implementado el tipo entero y rango 2E31, tienen la fecha 1970 como inicial. Haciendo unos cálculos rápidos, aunque parezca mentira 2E31 - 1 es lo mismo que decir 2.147.483.647 segundos, o poco más de 68 años. Viéndolo en años, no parece tanto, ¿verdad?.
Dado que algunos sistemas tienen su fecha inicial en 1970, y teniendo en cuenta el máximo del contador de segundos en poco más de 68 años, todo apunta al problema del año 2038. Más concretamente, el 19 de enero de 2038 a las 03:14:07 (hora internacional) podría desbordarse la memoria de algunos sistemas... y conllevar a diversos problemas.
Aquí estamos ante un caso similar al del llamado "Efecto 2000". Entonces se decía que los ordenadores no estaban preparados para el cambio en sus relojes del año 1.999 al 2.000, cuando en realidad muchos ordenadores (incluido mi viejo 286) lo pasaron sin ningún problema.
Ver 30 comentarios