El problema del año 2038 en la informática se espera fallas de software en la víspera del 19 de enero de 2038 . Este problema afectará a los programas y sistemas que utilizan la representación de tiempo estándar POSIX ( tiempo UNIX ), que es la cantidad de segundos que han transcurrido desde la medianoche del 1 de enero de 1970 . Esta representación del tiempo es el estándar para los sistemas operativos similares a Unix (debido al uso ubicuo del lenguaje C ).
Los sistemas más antiguos de 32 bits (antes de mediados de la década de 1990) usaban un tipo de datos time_tpara almacenar segundos como un entero con signo de 32 bits. La última fecha que se puede representar en este formato en el estándar POSIX es 03:14:07, martes 19 de enero de 2038 UTC .
Un tiempo posterior hará que dicho campo de datos se vuelva negativo, por lo que se repetirá el tiempo (porque los programas pueden interpretar un número negativo como un tiempo en 1970 o 1901, dependiendo de la implementación). Como resultado, cualquier cálculo que incluya una fecha posterior al 19 de enero de 2038 puede provocar que el programa se bloquee o que se produzcan cálculos erróneos.
No existe una solución simple al problema Y2038 para las combinaciones existentes de sistemas operativos y software de aplicación. Cambiar la definición de tipo time_ta 64 bits romperá la compatibilidad binaria de los programas, los datos almacenados existentes y cualquier otra cosa que use una representación binaria del tiempo. Y la conversión time_ta un número entero sin signo puede romper los programas que calculan las diferencias de tiempo.
La mayoría de los sistemas operativos para arquitecturas de 64 bits ya utilizan una representación de enteros de 64 bits en formato time_t. La transición a tales arquitecturas ya está en marcha y se espera que se complete para 2038.
Además de esto, el formato de 32 bits time_ttambién se incluye en las especificaciones de formato de archivo, como el omnipresente formato de archivo ZIP . El formato de archivo puede existir durante muchas generaciones de computadoras, lo que significa que el problema Y2038 seguirá siendo relevante.
La introducción del formato de 64 bits introduce una nueva fecha de "bucle invertido": dado que el valor máximo será de segundos, ocurrirá en unos 292 000 millones de años [1] , que es mucho más que la edad del Universo .
El problema del año 2038 también es relevante para las versiones de Windows de 32 bits , ya que una parte importante del propio sistema operativo y una gran cantidad de programas están escritos en C / C++ . Los desarrolladores de Windows afirman [2] que han reparado la mayor parte del código afectado por este problema, pero no pueden ofrecer ninguna garantía sobre el software de terceros.
Desde la versión 5.6 del kernel de Linux (kernel 5), el problema se ha resuelto, pero a partir de 2020, hay una gran cantidad de software que aún debe repararse [3] .
El popular DBMS de MySQL y SQL Server para el tipo TIMESTAMP tiene algunas limitaciones: los valores que contienen la fecha y la hora en TIMESTAMP están en el rango de '1970-01-01 00:00:01 UTC' a '2038-01 -19 03:14 :07 UTC' [4] .
Problemas de fechas en la programación. | |
---|---|