El problema del año 2000 es conocido hoy por la mayoría de la gente debido a la gran atención que ha recibido por parte de los medios de comunicación. La mayoría de los programas escritos en C son relativamente inmunes al problema del año 2000, pero sufren el problema del año 2038. Pero, ¿qué implica este problema?
Este problema surge porque la mayoría de los programas C utiliza una biblioteca de rutinas llamada biblioteca de tiempo estándar (biblioteca de tiempo estándar:
El formato estándar de 4 bytes supone que la hora de inicio es el 1 de enero de 1970, a las 00:00:00. Este valor es cero. Cualquier valor de hora/fecha se expresa como el número de segundos después de ese valor cero. Así, el valor 919642718 es 919.642.718 segundos después de las 00:00:00 del 1 de enero de 1970, que es el domingo 21 de febrero de 1999, a las 23:18:38 GMT.
Este es un formato conveniente porque si restas dos valores cualesquiera, obtiene un número de segundos que es la diferencia de tiempo entre ellos. Luego puede utilizar otras funciones de la biblioteca para determinar cuántos minutos/horas/días/meses/años han pasado entre los dos momentos.
¿Pero cuál es el problema con el año 2038?
Un entero de 4 bytes con signo tiene un valor máximo de 2.147.483.647, y de aquí proviene el problema del año 2038. El valor máximo de tiempo antes de cambiar a un valor negativo (e inválido) es 2.147.483.647, lo que se traduce en 19 de enero de 2038. En esta fecha, cualquier programa en C que utilice la biblioteca de tiempo estándar Empezarás a tener problemas con los cálculos de fechas..
Afortunadamente, este problema es un poco más fácil de resolver que el problema del año 2000 en los mainframes. Los programas bien escritos pueden simplemente recompilarse con una nueva versión de la biblioteca que utilice, por ejemplo. Valores de 8 bytes para formato de almacenamiento..
Esto es posible porque la biblioteca encapsula toda la actividad temporal con sus propios tipos y funciones de tiempo (a diferencia de la mayoría de los programas de mainframe, que no han estandarizado sus formatos de fecha o cálculos). Así, el problema del año 2038 No debería ser tan difícil de resolver como lo fue el problema del año 2000..
Lea también: