stringtranslate.com

Errores de formato y almacenamiento de hora

En informática , las limitaciones de los tipos de datos y los errores de software pueden provocar errores en el cálculo o la visualización de la fecha y la hora . Estas son manifestaciones más comunes de desbordamiento aritmético , pero también pueden ser el resultado de otros problemas. La consecuencia más conocida de este tipo es el problema Y2K , pero existen muchas otras fechas o momentos importantes que han causado o causarán problemas según diversas deficiencias de programación.

Año 1975

El 4 de enero de 1975, el campo de 12 bits que se había utilizado para las fechas en los sistemas operativos DECsystem-10 se desbordó. Hubo numerosos problemas y fallas relacionados con este error mientras se desarrollaba un formato alternativo. [1]

Año 1978

El sistema operativo OS/8 de Digital Equipment Corporation para la computadora PDP-8 utilizó solo tres bits para el año, que representan los años 1970 a 1977. [2]

Esto se reconoció cuando se desarrolló el sistema operativo COS-310 y las fechas se registraron de manera diferente. [3]

Año 1993

Varios juegos de Sierra Entertainment lanzados para el sistema operativo Mac clásico comenzaron a congelarse cuando se ejecutaban el 18 de septiembre de 1993. Un problema en la versión para Mac del intérprete creativo de Sierra (Mac SCI) causaba que el juego se "bloqueara" al intentar manejar un retraso debido a un problema que involucraba un desbordamiento. Mac SCI intentaba usar la fecha para determinar cuánto debería durar un retraso obteniendo el tiempo actual en segundos desde el 1 de enero de 1904, la época de Macintosh, y dividiéndolo por 12 horas. La división era procesada por el Motorola 68000 y no se producía si se detectaba un desbordamiento debido a la división, pero Mac SCI continuaba independientemente como si la división hubiera ocurrido, lo que eventualmente resultó en que un retraso de un segundo se tratara como un retraso de 18 horas y así sucesivamente. Sierra lanzó un parche llamado MCDATE que resolvió el problema durante casi 14 años. [4] [5]

Año 1997

El reloj del Dominio/OS , que se basa en la cantidad de unidades de 4 microsegundos que han ocurrido desde el 1 de enero de 1980, superó los 47 bits el 2 de noviembre de 1997, lo que dejó inutilizables los sistemas sin parches. [6]

Año 1999

En los últimos meses antes del año 2000, ocurrieron otros dos hitos relacionados con la fecha que recibieron menos publicidad que el entonces inminente problema del Y2K.

Primer cambio de GPS

Las fechas GPS se expresan como un número de semana y un número de día de la semana, y el número de semana se transmite como un valor de diez bits . Esto significa que cada 1024 semanas (aproximadamente 19,6 años) después del domingo 6 de enero de 1980 (la época GPS ), la fecha se restablece nuevamente a esa fecha; esto sucedió por primera vez a las 23:59:47 del 21 de agosto de 1999 [7] , la segunda vez a las 23:59:42 UTC del 6 de abril de 2019, y volverá a suceder el 20 de noviembre de 2038 [8]. Para abordar esta preocupación, los mensajes de navegación GPS modernizados utilizan un campo de 13 bits, que solo se repite cada 8192 semanas (157 años) y no volverá a cero hasta el año 2137 [9].

9/9/99

Muchos programas o conjuntos de datos antiguos utilizaban "9/9/99" como valor no válido para indicar una fecha no resuelta o como un finalizador para indicar que no había más datos en el conjunto. Esto provocó que muchos sistemas se bloquearan al llegar la fecha real que esto representa, el 9 de septiembre de 1999. [7]

Año 2000

Representaciones de años de dos dígitos

En varios puntos del siglo XXI surgirán problemas derivados de ciertas soluciones temporales al problema del Y2K. Algunos programas se adaptaron al Y2K al seguir utilizando años de dos dígitos, pero eligiendo un año arbitrario antes del cual esos años se interpretarían como 20 xx y después como 19 xx . [10]

Por ejemplo, es posible que se haya modificado un programa para que trate los valores de año de dos dígitos 00-68 como referencias del período 2000 a 2068, y los valores 69-99 como referencias del período 1969 a 1999. [11] Un programa de este tipo no podrá tratar correctamente años posteriores a 2068.

Para las aplicaciones que requieren calcular el año de nacimiento (u otro año anterior), este algoritmo se ha utilizado durante mucho tiempo para superar el problema del año 1900 , pero no ha logrado reconocer a personas mayores de 100 años .

Año 2001

Los sistemas que utilizaban una cadena de nueve dígitos para registrar el tiempo en segundos desde la época Unix tuvieron problemas para informar tiempos más allá del milmillonésimo segundo después de la época del 9 de septiembre de 2001 a las 01:46:40 (el "billenium"). Los problemas no fueron generalizados. [12]

Año 2007

Los juegos de Sierra Entertainment para el sistema operativo Mac OS clásico que se habían parcheado con el programa MCDATE o que se habían publicado posteriormente con el parche incorporado comenzaban a congelarse el 28 de mayo de 2007. Al igual que con el problema del año 1993, esto se debía a un problema en el SCI de Mac al intentar usar la fecha para determinar cuánto tiempo debería durar un retraso. Los programas con el parche MCDATE se congelan porque el SCI de Mac toma el número actual de segundos desde la época de Macintosh del 1 de enero de 1904, le resta 432.000.000 de segundos y luego lo divide por 12 horas a través del Motorola 68000, para luego determinar cuánto tiempo deberían durar los retrasos. El 28 de mayo de 2007, el Motorola 68000 nuevamente no divide debido a la protección contra desbordamiento, que el SCI de Mac ignora. [4]

Año 2010

Algunos sistemas tuvieron problemas una vez que llegó el año 2010. Algunos medios de comunicación lo denominaron el problema "Y2K+10" o "Y2.01k". [13]

La principal fuente de problemas fue la confusión entre la codificación de números hexadecimales y la codificación de números BCD . Los números del 0 al 9 se codifican tanto en hexadecimal como en BCD como 00 16 a 09 16 . Pero el número decimal 10 se codifica en hexadecimal como 0A 16 y en BCD como 10 16 . Por lo tanto, un BCD 10 16 interpretado como una codificación hexadecimal representa erróneamente el número decimal 16.

Por ejemplo, el protocolo SMS utiliza codificación BCD para las fechas, por lo que algunos programas de telefonía móvil informaban incorrectamente las fechas de los mensajes como 2016 en lugar de 2010. Windows Mobile fue el primer programa afectado por este problema técnico; en algunos casos, WM6 cambió la fecha de cualquier mensaje SMS entrante enviado después del 1 de enero de 2010, del año 2010 al 2016. [14] [15]

Otros sistemas afectados incluyen terminales EFTPOS , [16] y la PlayStation 3 (excepto el modelo Slim). [17]

La PlayStation 3 de Sony trató incorrectamente el año 2010 como un año bisiesto , por lo que el inexistente 29 de febrero de 2010, se mostró el 1 de marzo de 2010, lo que provocó un error de programa . [18]

El fallo más importante de este tipo se produjo en Alemania, donde más de 20 millones de tarjetas bancarias se volvieron inutilizables, y en Citibank Bélgica, cuyos chips de identificación de clientes Digipass dejaron de funcionar. [19]

Año 2011

Taiwán utiliza oficialmente el calendario Minguo , que considera el año gregoriano 1912 como su año 1. Por lo tanto, el año gregoriano 2011 es el año 100 de la República de China, su primer año de 3 dígitos. [20]

Año 2013

La sonda espacial Deep Impact perdió la comunicación con la Tierra el 11 de agosto de 2013 debido a un problema de etiquetado de tiempo; la fecha se almacenó como un entero de 32 bits sin signo que contaba el número de décimas de segundo desde el 1 de enero de 2000. [21]

Año 2019

Segundo cambio de GPS

En 2019, se produjo el segundo cambio de número de semana del GPS .

Transición al calendario japonés

El 30 de abril de 2019, el emperador Akihito de Japón abdicó en favor de su hijo Naruhito . Como los años en Japón se denominan tradicionalmente por nombres de era que corresponden al reinado de cada emperador, esto resultó en un nuevo nombre de era, Reiwa (令和) , después de la ascensión al trono de Naruhito al día siguiente. Debido a que el emperador anterior, Hirohito , murió el 7 de enero de 1989, y el reinado de Akihito correspondió principalmente con el aumento en el uso de computadoras, la mayoría del software no había sido probado para garantizar un comportamiento correcto en un cambio de era, mientras que las pruebas se complicaron aún más por el hecho de que el nuevo nombre de era no fue revelado hasta el 1 de abril de 2019. Por lo tanto, se esperaban errores de software que no anticiparan una nueva era.

Año 2020

Los videojuegos WWE 2K20 y Star Wars Jedi: Fallen Order dejaron de funcionar el 1 de enero de 2020, cuando el año cambió de fecha. Los fallos solo se pudieron evitar reiniciando el año a 2019 hasta que se lanzara un parche. [22] [23] Además, Crystal Reports 8.5 no generaría informes específicos a partir de 2020. [24]

Los parquímetros de Parkeon en la ciudad de Nueva York y otras ubicaciones no pudieron aceptar tarjetas de crédito como forma de pago a partir de 2020. Se implementó una solución alternativa, pero requirió que cada parquímetro se actualizara individualmente. En Nueva York, no se esperaba que los parquímetros se arreglaran hasta el 9 de enero. [25] [26]

En Polonia, 5.000 cajas registradoras dejaron de imprimir la fecha correctamente. [27]

Los relojes inteligentes deportivos Suunto mostraban un error al calcular los días de la semana que se presentaban con un paso de +2 (por ejemplo, VIERNES en lugar de MIÉRCOLES, SÁBADOS en lugar de JUEVES). En el caso de los relojes Suunto Spartan, el error se solucionó con la versión de firmware 2.8.32. [28]

Sistema operativo Mac clásico

El panel de control de las versiones 6, 7 y 8 del sistema operativo Mac OS Classic solo permite establecer la fecha hasta el 31 de diciembre de 2019, aunque el sistema puede seguir avanzando el tiempo más allá de esa fecha. [29] [30]

Microsoft Schedule+

La primera versión de Microsoft Schedule+ incluida con la versión 3.0 del cliente de correo electrónico Microsoft Mail se negará a trabajar con años mayores a 2020 o más, debido al hecho de que el programa fue diseñado para operar dentro de una ventana de tiempo de 100 años que va desde 1920 a 2019. Como resultado, la fecha solo se puede establecer hasta el 31 de diciembre de 2019. [31]

Año 2021

Los usuarios de Samsung informaron que los teléfonos que funcionan con la última actualización de One UI 3.0 o Android 11 perdieron el acceso a las estadísticas de batería y carga a partir de 2021. Los dispositivos afectados no reportarían estadísticas de uso, por lo que dejarían esas secciones en blanco. [32] [33]

Año 2022

Las fechas almacenadas en el formato aammddHHMM convertidas a un entero de 32 bits con signo se desbordaron el 1 de enero de 2022, como 2 31 = 2147483648. Los números de actualización del componente de escaneo de malware de Microsoft Exchange se vieron especialmente afectados , ya que parecen utilizarse para una comprobación matemática para determinar la última actualización. [34] [35]

Los automóviles Honda y Acura fabricados entre 2004 y 2012 que contenían sistemas de navegación GPS mostraban incorrectamente el año 2002. Este problema se debía a un desbordamiento de la época del GPS. [36] [37] El problema se resolvió el 17 de agosto de 2022. [38]

Año 2024

Los lectores de tarjetas de pago en las gasolineras de Nueva Zelanda no pudieron soportar el año bisiesto y no pudieron dispensar gasolina adecuadamente. [39]

Los videojuegos EA Sports WRC y Theatrhythm Final Bar Line también sufrieron problemas relacionados con el año bisiesto, ya que el primero se bloqueaba al intentar cargar el juego y el segundo afirmaba que los datos guardados estaban dañados. Ambos juegos tuvieron que configurarse para el día siguiente, el 1 de marzo de 2024, para que funcionaran correctamente. [40] [41] [42]

Año 2025

En Japón, algunos sistemas informáticos antiguos que utilizan el calendario japonés y que no han sido actualizados aún cuentan los años según la era Shōwa . El año 2025 corresponde en esos sistemas a Shōwa 100, lo que puede causar problemas si el software supone dos dígitos para el año. [43]

Año 2028

Algunos sistemas almacenan el año como un byte único a partir de 1900, lo que da un rango de 255 (8 bits) y permite representar de forma segura fechas hasta 2155. Sin embargo, no todos los sistemas utilizan un byte sin signo : algunos han sido codificados por error con un byte con signo que solo permite un rango de 127 años, lo que significa que el campo de fecha en el software será incorrecto después de 2027 y puede causar un comportamiento impredecible. Varios programas de discos ópticos que funcionan con el formato ISO 9660 se ven afectados por esto. [44]

A finales de los años 1970, en los sistemas Data General Nova y Eclipse, la World Computer Corporation (que realizaba aplicaciones para cooperativas de crédito) creó un formato de fecha con un campo de fecha de 16 bits para 128 años (7 bits; tenga en cuenta que 1900+128=2028), 12 meses (4 bits) y 31 días (5 bits). Esto permitió que las fechas se pudieran comparar directamente utilizando funciones sin signo. Algunos sistemas, incluido el HP 3000 , todavía utilizan este formato, aunque consultores externos han desarrollado un parche. [45]

Año 2032

Palm OS utiliza tanto números enteros con signo con la época de 1970 como números enteros sin signo con la época de 1904 para diferentes funciones del sistema [46], como por ejemplo para el reloj del sistema y las fechas de los archivos (consulte el formato PDB ). Si bien esto debería hacer que Palm OS sea susceptible al problema de 2038, Palm OS también utiliza un campo de 7 bits para almacenar el valor del año, con una época diferente que cuenta a partir de 1904, lo que da como resultado un año máximo de 2031 (1904 + 127). [47]

Año 2036

El Protocolo de Tiempo de Red tiene un problema de desbordamiento relacionado con el problema del año 2038 , que se manifiesta a las 06:28:16 UTC del 7 de febrero de 2036, en lugar de 2038. Las marcas de tiempo de 64 bits utilizadas por NTP consisten en una parte de 32 bits para segundos y una parte de 32 bits para fracciones de segundo, lo que le da a NTP una escala de tiempo que se renueva cada 2 32 segundos (136 años) y una resolución teórica de 2 −32 segundos (233 picosegundos). NTP utiliza una época del 1 de enero de 1900. La primera renovación ocurre en 2036, antes del problema del año 2038 de UNIX. [48] [49]

Año 2038

Cambio de hora en Unix

La implementación original del sistema operativo Unix almacenaba la hora del sistema como un entero con signo de 32 bits que representaba la cantidad de segundos transcurridos desde la época Unix (1 de enero de 1970, 00:00:00 UTC). Este valor se actualizará después del 19 de enero de 2038, 03:14:07 UTC. Este problema se ha solucionado en la mayoría de los sistemas operativos Unix y similares modernos almacenando la hora del sistema como un entero con signo de 64 bits, aunque también se deben cambiar las aplicaciones, los protocolos y los formatos de archivo individuales.

Biblioteca de ejecución de Windows C

Al igual que el problema de renovación de tiempo de Unix, la versión de 32 bits de gmtime en las bibliotecas de tiempo de ejecución de C en Windows tiene un problema similar. [50]

Este problema ya se ha manifestado en la versión 10.1.4.3 de Oracle Access Manager para Windows. El componente Identity Console establece una cookie que contiene preferencias de la interfaz de usuario con una caducidad de 500.000.000 segundos en el futuro (unos 16 años). Esto es posterior al 19 de enero de 2038 y, por lo tanto, genera una excepción para determinadas actividades de búsqueda posteriores a las 02:20:48 UTC del 17 de marzo de 2022 porque la llamada gmtime_r() no puede convertir el número proporcionado en una fecha para escribir en la cookie. [51] A pesar de la antigüedad del software (18 de junio de 2009), Oracle emitió un parche número 33983548 el 6 de abril de 2022.

Tercer cambio de GPS

El tercer cambio de número de semana del GPS ocurrirá el 20 de noviembre de 2038, a las 23:59:37 UTC.

Año 2040

Los primeros ordenadores Apple Macintosh almacenaban la hora en sus relojes de tiempo real (RTC) y en los sistemas de archivos HFS como un número de segundos de 32 bits sin signo desde las 00:00:00 del 1 de enero de 1904. Después de las 06:28:15 del 6 de febrero de 2040 (es decir, 2 32 −1 segundos desde la época), esto volverá a 1904: [52] Además de esto, HFS+ , el formato predeterminado para todos los ordenadores Macintosh recientes de Apple, también se ve afectado. El sistema de archivos de Apple que lo reemplazó resuelve este problema.

ProDOS para las computadoras Apple II solo admite números de año de dos dígitos. Para evitar problemas con el Y2K, Apple emitió una nota técnica que indicaba que el número de año debía representar el período 1940-2039. [53] El software para la plataforma puede mostrar incorrectamente las fechas que comienzan en 2040, aunque se está realizando un esfuerzo de terceros para actualizar ProDOS y el software de la aplicación para que admitan años hasta 4095. [54]

Año 2042

El 18 de septiembre de 2042, el reloj de hora del día (TODC) del mainframe IBM S/370 y sus sucesores, incluido el zSeries actual, se renovará. [55]

Los TODC más antiguos se implementaron como un conteo de 64 bits de 2 −12 unidades de microsegundos (0,244 ns), y la base estándar era el 1 de enero de 1900, UT . En julio de 1999 se anunció el reloj TODC extendido, que extendió el reloj hacia la derecha (es decir, los bits extendidos son menos significativos que los bits originales). La resolución real depende del modelo, pero el formato es consistente y, por lo tanto, se renovará después de 2 52 microsegundos. [55]

El valor TODC es accesible para los programas en modo usuario y se utiliza a menudo para cronometrar y generar identificadores únicos para eventos.

Si bien IBM ha definido e implementado un formato de hardware más largo (128 bits) en máquinas recientes, que extiende el temporizador en ambos extremos en al menos 8 bits adicionales, muchos programas continúan dependiendo del formato de 64 bits, que sigue siendo un subconjunto accesible del temporizador más largo.

Año 2048

La lógica de planificación de la capacidad en el sistema ERP SAP S/4HANA sólo admite fechas de finalización hasta el 19 de enero de 2048 (24.855 días a partir del 1 de enero de 1980). Esto afecta, por ejemplo, a la planificación de la producción, el mantenimiento y la inspección. [56]

Año 2069

Según la Especificación Única de UNIX para analizar años de dos dígitos utilizando strptime(), "los valores en el rango [69,99] se referirán a los años 1969 a 1999 inclusive y los valores en el rango [00,68] se referirán a los años 2000 a 2068 inclusive", [57] lo que significa que, cuando se analiza con strptime(), el año de dos dígitos "69" se interpretará como 1969 en lugar de 2069.

Año 2079

Días 32.768 y 65.536

Los programas que almacenan fechas como el número de días desde una fecha arbitraria (o época ) son vulnerables a efectos de acumulación o envoltura si los valores no son lo suficientemente amplios para permitir que los valores de fecha abarquen un rango de tiempo lo suficientemente grande esperado para la aplicación. Los valores binarios de 16 bits con signo se acumulan después de 32.768 (2 15 ) días desde la fecha de la época, lo que produce valores negativos. Algunos sistemas mainframe experimentaron fallas de software porque habían codificado fechas como el número de días desde el 1 de enero de 1900, lo que produjo números de días negativos inesperados en la fecha de acumulación del 18 de septiembre de 1989. De manera similar, los recuentos de días binarios sin signo de 16 bits se desbordan después de 65.536 (2 16 ) días, que se truncan a valores cero. Para el software que utiliza una época del 1 de enero de 1900, esto ocurrirá el 6 de junio de 2079. [58]

Año 2080

Algunos teléfonos Nokia (si no todos) que funcionan con la Serie 40 (como el Nokia X2-00 ) solo admiten fechas hasta el 31 de diciembre de 2079 y, por lo tanto, no podrán mostrar fechas posteriores. Una solución alternativa es utilizar el año 1996, 2024 o 2052 en lugar de 2080 (como años bisiestos compatibles) para mostrar el día de la semana, la fecha y el mes correctos en la pantalla principal. [ cita requerida ]

Los sistemas que almacenan el año como un valor de dos dígitos 00..99 internamente solamente, como muchos RTC, pueden trasladarse desde el 31 de diciembre de 2079 a la época de IBM PC y DOS del 01-01-1980 .

Año 2100

Las API y funciones de conversión de fechas de archivos de DOS y Windows (como INT 21h /AH=2Ah) admiten oficialmente fechas hasta el 31 de diciembre de 2099 únicamente (aunque el sistema de archivos FAT subyacente admitiría teóricamente fechas hasta el año 2107). Por lo tanto, los sistemas operativos basados ​​en DOS, así como las aplicaciones que convierten otros formatos al formato FAT/DOS, pueden mostrar un comportamiento inesperado a partir del 1 de enero de 2100.

De la misma manera, la Nintendo DS y la GameCube, así como la Sony PlayStation 4, sólo permiten a los usuarios fijar fechas hasta el año 2099. En el caso de la Nintendo DS, el sistema no hará avanzar el tiempo más allá del 31 de diciembre de 2099, mientras que la GameCube y la PS4 sí lo harán hasta el año 2100 y más allá, a pesar de que los usuarios de esas consolas de juego no pueden introducir manualmente la fecha y la hora con esa antelación.

2100 no es unaño bisiesto

Otro problema surgirá al final del 28 de febrero de 2100, ya que 2100 no es un año bisiesto . Como muchas implementaciones comunes del algoritmo del año bisiesto son incompletas o están simplificadas, pueden asumir erróneamente que 2100 es un año bisiesto, lo que hace que la fecha pase del 28 de febrero de 2100 al 29 de febrero de 2100, en lugar del 1 de marzo de 2100.

Año 2106

Muchos formatos de archivos, protocolos de comunicación e interfaces de aplicaciones existentes emplean una variante del formato de fecha Unix time_t , que almacena el número de segundos transcurridos desde la época Unix (medianoche UTC, 1 de enero de 1970) como un entero binario de 32 bits sin signo . Este valor se actualizará el 7 de febrero de 2106 a las 06:28:15 UTC. Es decir, en este momento el número de segundos transcurridos desde el 1 de enero de 1970 es FFFF FFFF en hexadecimal.

Este problema de representación de almacenamiento es independiente de los programas que almacenan y operan internamente en tiempos del sistema como valores enteros con signo de 64 bits.

Año 2108

Las marcas de fecha y hora almacenadas en los sistemas de archivos FAT , introducidas originalmente con 86-DOS 0.42 en 1981 y trasladadas a MS-DOS , PC DOS , DR-DOS , etc., se desbordarán al final del 31 de diciembre de 2107. La marca de fecha de la última modificación (y con DELWATCH 2.0+ también la marca de fecha de eliminación de archivo , y desde DOS 7.0+ opcionalmente también la marca de fecha del último acceso y la marca de fecha de creación ), se almacenan en la entrada del directorio con el año representado como un número de siete bits sin signo (0–127), relativo a 1980, y por lo tanto no pueden indicar ninguna fecha en el año 2108 y posteriores. Las funciones API definidas para recuperar estas fechas oficialmente solo admiten fechas hasta el 31 de diciembre de 2099.

Esto también afectará al formato de archivo ZIP , ya que utiliza internamente marcas de tiempo de modificación de archivos FAT.

Año 2137

Las fechas GPS se expresan como un número de semana y un número de día de la semana; el número de semana inicialmente utilizaba un valor de diez bits y los mensajes de navegación GPS modernizados utilizaban un campo de 13 bits. Los sistemas de diez bits se renovarían cada 1024 semanas (aproximadamente 19,6 años) después del domingo 6 de enero de 1980 (la época GPS ), y los sistemas de 13 bits se renovarían cada 8192 semanas. Los sistemas de trece bits se renovarán hasta cero en 2137. [7] [8]

Año 2248

RISC OS almacena las fechas en centisegundos desde el 1 de enero de 1900 en cinco bytes (40 bits). Estas marcas de tiempo se utilizan internamente y se exponen en los metadatos del archivo (direcciones de carga y ejecución). Esta época finaliza el 3 de junio de 2248 a las 06:57:57.75 UTC. [59]

Año 2262

Algunos sistemas de cronometraje cuentan nanosegundos desde 1970 utilizando un entero con signo de 64 bits, que se desbordará el 11 de abril de 2262, 23:47:16. La API del lenguaje de programación Go UnixNano es un ejemplo. [60] Otros ejemplos incluyen el objeto Timestamp en pandas de Python , [61] chrono::nanoseconds de C++ , [62] y los temporizadores QEMU . [63]

Año 2286

Los sistemas que utilizan una cadena de 10 caracteres para registrar la hora Unix pueden tener problemas para informar horas posteriores al 20 de noviembre de 2286, a las 17:46:39, diez mil millones de segundos después de la época Unix.

Año 2446

En ext4 , el sistema de archivos predeterminado para muchas distribuciones de Linux, los dos bits inferiores de {a,c,m}time_extrase utilizan para ampliar los {a,c,m}timecampos, lo que posterga el problema del año 2038 hasta el año 2446. [64] Dentro de este campo "extra" de 32 bits, los dos bits inferiores se utilizan para ampliar el campo de segundos de 32 bits para que tenga un ancho de 34 bits; los 30 bits superiores se utilizan para proporcionar una precisión de marca de tiempo de nanosegundos. Por lo tanto, las marcas de tiempo no deberían desbordarse hasta mayo de 2446. [65]

Años 4000, 8000, etc.

En escalas de tiempo de miles de años, el calendario gregoriano va por detrás de las estaciones astronómicas. Esto se debe a que la velocidad de rotación de la Tierra se va reduciendo gradualmente , lo que hace que cada día sea ligeramente más largo con el tiempo (véase aceleración de las mareas y segundo intercalar ), mientras que el año mantiene una duración más uniforme.

En el siglo XIX, Sir John Herschel propuso una modificación del calendario gregoriano con 969 días bisiestos cada 4000 años, en lugar de los 970 días bisiestos que el calendario gregoriano insertaría durante el mismo período. [66] Esto reduciría el año promedio a 365,24225 días. La propuesta de Herschel haría que el año 4000, y sus múltiplos, fueran comunes en lugar de bisiestos. Si bien esta modificación se ha propuesto a menudo desde entonces, nunca se ha adoptado oficialmente. [67]

Aunque la mayoría de los programas informáticos (incluidos Excel , JavaScript y R ) reconocen actualmente los años 4000 y 8000 como años bisiestos (ya que son divisibles por 400), SAS ha adoptado la "regla de los 4000 años". Por lo tanto, con el software actual, las conversiones de fechas entre SAS y otros programas dejarán de estar sincronizadas después del 28 de febrero de 4000. [68] [69]

Año 4501

Microsoft Outlook utiliza la fecha 1 de enero de 4501 como marcador de posición para "ninguno" o "vacío". [70] [71]

Año 10.000

El año 10.000 será el primer año gregoriano con cinco dígitos. Todos los años futuros que sean potencias de 10, así como las fechas anteriores al décimo milenio a. C. , se enfrentan a problemas de codificación similares.

Ejemplos

Este problema se puede ver en el programa de hoja de cálculo Microsoft Excel a partir de 2023, que almacena las fechas como el número de días desde el 31 de diciembre de 1899 (el día 1 es el 1 de enero de 1900) con un día bisiesto ficticio en 1900 si se utiliza el sistema de fecha predeterminado de 1900. Alternativamente, si se utiliza el sistema de fecha de 1904, la fecha se almacena como el número de días desde el 1 de enero de 1904 (el día 1 es el 2 de enero de 1904), y no hay problema de año bisiesto. La fecha máxima admitida para el cálculo es el 31 de diciembre de 9999. [72] [73]

Año 30.828

En Windows, la FILETIMEestructura almacena el número de intervalos de 100 nanosegundos desde las 00:00:00.0000000 UTC del 1 de enero de 1601 como un entero de 64 bits con signo. Este valor superará su valor máximo posible a las 02:48:05.4775808 UTC del 14 de septiembre de 30828, fecha a partir de la cual Windows no aceptará fechas posteriores a ese día y mostrará errores de "hora del sistema no válida" en NTFS. [74]

Años 32.768 y 65.536

Los programas que procesan años como valores de 16 bits pueden encontrar problemas al tratar con el año 32.768 o 65.536, dependiendo de si el valor se trata como un entero con signo o sin signo.

Para el problema del año 32.768 , los años posteriores a 32.767 pueden interpretarse como números negativos, comenzando con −32.768. [75] Es más probable que el problema del año 65.536 se manifieste al representar el año 65.536 como el año 0. [76]

Año 33.658

Los archivos de biblioteca estática creados por el comando ar de Unix almacenan las marcas de tiempo como una cadena ASCII que contiene un número decimal de segundos después de la época de Unix (1 de enero de 1970, 00:00:00 UTC), con un límite de 12 caracteres ASCII. Este valor se actualizará después de la 1:46:39 del 27 de septiembre de 33658.

Año 100.000

El año 100.000 será el primer año gregoriano con seis dígitos.

Año 275.760

La API de fecha de JavaScript almacena fechas como el número de milisegundos desde el 1 de enero de 1970. Las fechas tienen un rango de ±100.000.000 de días desde la época, lo que significa que los programas escritos en JavaScript que utilizan la API de fecha no pueden almacenar fechas posteriores al 13 de septiembre del año 275.760 d. C. [77]

Año 292.277.026.596

El problema del año 292.277.026.596 (aproximadamente2,92 × 10 11 años en el futuro) ocurrirá cuando el tiempo Unix de 64 bits se desborde después de las 15:30:08 UTC del domingo 4 de diciembre del año 292 277 026 596 d. C. [78] [79] Este año está tan lejos en el futuro (mucho más allá de la probable vida útil de la Tierra , el Sol , la humanidad e incluso más allá de algunas predicciones sobre la vida útil del universo ) que se hace referencia a él principalmente como una cuestión de interés teórico, una broma o una indicación de que versiones anteriores como el problema del año 2038 no se pueden "resolver" verdaderamente para siempre.

Desbordamiento de tiempo relativo

Microsoft

En Microsoft Windows 7, Windows Server 2003, Windows Server 2008 y Windows Vista, la información de inicio de la conexión TCP se almacenaba en centésimas de segundo, utilizando un entero sin signo de 32 bits, lo que causaba un desbordamiento y que las conexiones TCP fallaran después de 497 días. [80]

Microsoft Windows 95 y Windows 98 tenían un problema con un retraso de 2 milisegundos en un controlador de dispositivo virtual (VTDAPI.VXD), que causaba que los sistemas se bloquearan después de 49,7 días. [81]

.NET hasta la versión 6.0 tenía un error que causaba que el ascenso de nivel del grupo de subprocesos fallara periódicamente después de 49,7 días debido a un desbordamiento al manejar los milisegundos desde el inicio. [82]

Boeing

El avión Boeing 787 ha tenido al menos dos problemas de software relacionados con el almacenamiento de tiempo. En 2015, se informó de un error en el que el tiempo se almacenaba en centésimas de segundo, utilizando un entero de 32 bits con signo, y los sistemas se bloqueaban después de 248 días. [83]

En 2020, la FAA emitió una directiva de aeronavegabilidad para un problema en el que, si la aeronave no se apaga por completo antes de alcanzar los 51 días de funcionamiento, los sistemas comenzarán a mostrar datos engañosos. [84]

Arduino

La plataforma Arduino proporciona un tiempo relativo a través de la función millis(). Esta función devuelve un valor de 32 bits sin signo para "milisegundos desde el inicio", que está diseñado para renovarse cada 49,71 días. De forma predeterminada, esta es la única fuente de tiempo disponible en la plataforma y los programas deben tener especial cuidado para manejar las renovaciones. [85] Internamente, millis() se basa en el conteo de interrupciones del temporizador. Ciertos modos de ahorro de energía deshabilitan las interrupciones y, por lo tanto, impiden que el contador avance durante el modo de suspensión. [86]

Problemas del año histórico

También en el caso de los años históricos pueden surgir problemas a la hora de gestionar eventos históricos, por ejemplo:

Véase también

Referencias

  1. ^ Austein, Rob (2 de febrero de 1987). "DATE-86, or The Ghost of Tinkles Past". The RISKS Digest . 4 (45). Comité de Informática y Política Pública de la ACM . Consultado el 29 de diciembre de 2014 .
  2. ^ "Directorio de linctape-images/os8l/ps-8-system-25.linc". OS/8 sólo puede almacenar fechas correspondientes a un período de 8 años...
  3. ^ "The Digital Equipment Corporation PDP-8: Preguntas frecuentes". COS-310, el sistema operativo comercial de DEC para el PDP-8... el sistema de archivos es casi el mismo que OS/8, pero las fechas se registran de forma diferente
  4. ^ ab "Notas de noticias". Revista InterAction . Vol. VI, núm. 3. Sierra Entertainment . 1993. pág. 12.
  5. ^ "Sierra's Macintosh Timebomb" (La bomba de tiempo de Sierra para Macintosh). www.benshoof.org . Consultado el 9 de marzo de 2023 .
  6. ^ "Últimas noticias sobre el error de fecha".
  7. ^ abc Janis L. Gogan (9 de agosto de 1999). "Applications to the Nines". InformationWeek . Archivado desde el original el 3 de octubre de 2008. Consultado el 21 de enero de 2008 .
  8. ^ ab "GPS week roll over April 6th" (Semana del GPS: 6 de abril). cyber.gov.au . Archivado desde el original el 20 de octubre de 2019. Consultado el 10 de junio de 2019 .
  9. ^ "GPS Week Number Rollover - April 2019" (Número de semana GPS: abril de 2019). GPS.gov . Oficina Nacional de Coordinación para Posicionamiento, Navegación y Cronometraje Basados ​​en el Espacio. 6 de abril de 2019. Consultado el 25 de febrero de 2023 .
  10. ^ Roger Deschner (21 de diciembre de 2001). «Identificación y corrección de fechas con años de dos dígitos». Universidad de Illinois en Chicago. Archivado desde el original el 15 de febrero de 2002. Consultado el 19 de enero de 2010 .Véase "Ejemplo 1: ventana fija de 100 años, 1973 a 2072"
  11. ^ fecha – escriba la fecha y la hora, Especificaciones básicas de The Open Group, número 6. IEEE Std 1003.1, edición 2004
  12. ^ Manjoo, Farhad. "Unix Tick Tocks to a Billion" (El tic tac de Unix llega a mil millones). Wired . Consultado el 29 de marzo de 2022 .
  13. ^ "Bank of Queensland afectado por falla "Y2.01k"". 4 de enero de 2010. Consultado el 25 de febrero de 2023 .
  14. ^ Fried, Ina (5 de enero de 2010). "Fechas de error de Windows Mobile 2010, textos 2016". CNET . Consultado el 24 de febrero de 2023 .
  15. ^ "Los teléfonos Windows Mobile sufren el error Y2K+10". 4 de enero de 2010. Archivado desde el original el 23 de octubre de 2013. Consultado el 3 de julio de 2013 .
  16. ^ "Bank of Queensland vs Y2K – an update". 4 de enero de 2010. Archivado desde el original el 8 de enero de 2010. Consultado el 3 de julio de 2013 .
  17. ^ Loftus, Jack (28 de febrero de 2010). "Error: 8001050F hace que PlayStation Network deje de funcionar". Gizmodo .
  18. ^ Metrowebukmetro (2 de marzo de 2010). «Sony corrige el error del «año bisiesto» de PS3». Metro . Consultado el 25 de octubre de 2022 .
  19. ^ "Bug de l'an 2010 en Allemagne: plus de 20 million de cartes bancaires inutilisables" [Error de 2010 en Alemania: más de 20 millones de tarjetas bancarias inutilizables]. RTL Bélgica (en francés). 5 de enero de 2010. Consultado el 25 de febrero de 2023 .
  20. ^ "El problema del Y1C en Taiwán". Pinyin News . 2 de enero de 2006.
  21. ^ "La misión de la NASA para cazar cometas en el espacio profundo llega a su fin". Laboratorio de Propulsión a Chorro. 20 de septiembre de 2013. Archivado desde el original el 14 de octubre de 2013. Consultado el 9 de julio de 2022 .
  22. ^ Mansoor, Saqib (1 de enero de 2020). "WWE 2K20 se niega a ejecutarse en 2020". SegmentNext . Consultado el 1 de enero de 2020 .
  23. ^ "Star Wars Jedi: Fallen Order y WWE 2K20 no se lanzarán debido a un error "2020" [ACTUALIZACIÓN]". DSOGaming . 1 de enero de 2020 . Consultado el 19 de noviembre de 2020 .
  24. ^ "sql – Conexión ODBC / Crystal Reports". Desbordamiento de pila . Consultado el 19 de noviembre de 2020 .
  25. ^ "Los parquímetros de la ciudad de Nueva York no aceptan tarjetas de crédito y nunca fueron programados para funcionar en 2020". 2 de enero de 2020. Consultado el 19 de noviembre de 2020 .
  26. ^ "Un fallo en el software de parquímetros causado por el Y2K20 provoca un problema en toda la ciudad – Gothamist". Archivado desde el original el 4 de enero de 2020. Consultado el 4 de enero de 2020 .
  27. ^ Pallus, Patryk (3 de enero de 2020). "Wielka awaria drukarek fiskalnych. Producent naprawia urządzenia, firmy liczą straty". Business Insider (en polaco) . Consultado el 4 de enero de 2020 .
  28. ^ "Actualizaciones del software del Suunto Spartan".
  29. ^ "Nota técnica TN1049 Acercándose al milenio: Mac y el año 2000". Archivado desde el original el 13 de noviembre de 2014. Consultado el 20 de enero de 2020 .
  30. ^ "Correcciones para Mac Vintage 2020" . Consultado el 21 de enero de 2020 .
  31. ^ "Q192201: XCLN: Schedule + 1.0 no se ejecutará después del 31/12/2019". Archivo de KnowledgeBase . Consultado el 6 de julio de 2022 .
  32. ^ Jeong, Eugene (13 de enero de 2021). "Los usuarios informan de un fallo interesante en One UI 3.0 de Samsung, pero tiene una solución sencilla". Phone Arena . Consultado el 9 de marzo de 2023 .
  33. ^ Bhardwaj, Deveshwar (21 de mayo de 2021). "Seguimiento de errores de actualización de Samsung One UI 3.0/3.1 (Android 11) [Continuación actualizada]". PiunikaWeb . Consultado el 9 de marzo de 2023 .
  34. ^ Born, Günter (1 de enero de 2022). "Problema del año de intercambio 2022: el motor de escaneo FIP-FS no se pudo cargar. No se puede convertir "2201010001" a largo (01/01/2022 00:00 UTC)". Born's Tech and Windows World . Consultado el 1 de enero de 2022 .
  35. ^ Martin, Alexander (2 de enero de 2022). "¿Recuerdas el error Y2K? Microsoft confirma un nuevo problema Y2K22". Sky News .
  36. ^ "Los relojes de Honda están estancados 20 años atrás y no hay solución". Jalopnik . 6 de enero de 2022 . Consultado el 8 de enero de 2022 .
  37. ^ "Una codificación deficiente ha dejado a algunos coches Honda estancados en el año 2002". Engadget . 7 de enero de 2022 . Consultado el 8 de enero de 2022 .
  38. ^ Acoba, Paulo (17 de agosto de 2022). "Los propietarios de Honda y Acura con problemas con el reloj informan que, a partir del 17 de agosto, su hora se corrige automáticamente, pero muchos siguen atascados con la fecha incorrecta". Archivado del original el 30 de mayo de 2023.
  39. ^ Un 'fallo del año bisiesto' cierra algunas estaciones de servicio en Nueva Zelanda Reuters
  40. ^ El juego Final Fantasy se estropea debido al día bisiesto Kotaku
  41. ^ Theatrhythm Final Fantasy en Nintendo Switch no funciona hoy, 29 de febrero, aparentemente porque es un año bisiesto IGN
  42. ^ EA Sports WRC se bloquea al iniciarse hoy, 29 de febrero, porque 2024 es un año bisiesto IGN
  43. ^ "Las grandes tecnológicas advierten del 'error del milenio en Japón' antes de la abdicación de Akihito". The Guardian . 25 de julio de 2018.
  44. ^ "Años desde 1900 + siete bits = rotura en 2028". rachelbythebay.com .
  45. ^ "MPE/iX versión 7.5 revisión del parche 2028 – Beechglen Development Inc".
  46. ^ "Referencia de biblioteca y lenguaje compilador de Palm OS® Protein C/C++" (PDF) . Consultado el 12 de octubre de 2019 .
  47. ^ "asunto:RE: Fecha limitada a 2031". mail-archive.com . Consultado el 12 de octubre de 2019 .
  48. ^ David L. Mills (12 de mayo de 2012). «La era NTP y la numeración de eras» . Consultado el 24 de septiembre de 2016 .
  49. ^ W. Richard Stevens; Bill Fenner; Andrew M. Rudoff (2004). Programación de redes UNIX. Addison-Wesley Professional. págs. 582–. ISBN 978-0-13-141155-5.
  50. ^ "gmtime, _gmtime32, _gmtime64". Microsoft . Consultado el 8 de abril de 2022 .
  51. ^ "Oracle Access Manager". Comunidades de Oracle . Oracle Corporation. 24 de marzo de 2022 . Consultado el 25 de febrero de 2023 .
  52. ^ Apple Computer, Inc., Inside Macintosh , Volumen II, Addison Wesley, 1985, pág. 369
  53. ^ "Fechas de ProDOS: 2000 y más allá". Apple, Inc. Consultado el 6 de diciembre de 2019 .
  54. ^ "ProDOS 2.5" . Consultado el 9 de junio de 2021 .
  55. ^ ab Lascu, Octavian; Eckam, Hans-Peter; Kozakos, George; Pereira, Paulo Vitor (junio de 2013), Server Time Protocol Planning Guide, IBM Redbooks (4.ª ed.), IBM , pág. 19, ISBN 978-0738438108, consultado el 11 de agosto de 2019
  56. ^ "Nota SAP 2258792 (se requiere acceso al Portal de soporte SAP)". 30 de noviembre de 2018.
  57. ^ "strptime - The Open Group Base Specification Issue 7, 2018 edition" (Edición 7 de las especificaciones básicas de The Open Group, edición de 2018) . Consultado el 4 de marzo de 2023 .
  58. ^ JR Stockton (12 de abril de 2009). «Fechas críticas y significativas». Archivado desde el original el 7 de septiembre de 2015. Consultado el 20 de agosto de 2009 .
  59. ^ https://www.riscosopen.org/wiki/Year_10,000_problem/documentation/show/OS_Word%2014_3 [ URL básica ]
  60. ^ "paquete de tiempo – tiempo". pkg.go.dev .
  61. ^ "Funcionalidad de series de tiempo/fecha – documentación de pandas 1.3.4".
  62. ^ "std::chrono::duration". es.cppreference.com .
  63. ^ "Versión actualizada para la versión v5.0.0". Archivado desde el original el 21 de enero de 2021 . Consultado el 19 de junio de 2021 .
  64. ^ ext4: Se corrige el manejo de tv_sec extendido
  65. ^ Diseño de disco Ext4: Marcas de tiempo de inodo
  66. ^ Herschel, John (1849). Esquemas de astronomía. pág. 629.
  67. ^ Steel, Duncan (2000). Marcando el tiempo: la épica búsqueda para inventar el calendario perfecto. John Wiley & Sons. pág. 185. ISBN 978-0-471-29827-4.
  68. ^ Chris Hemedinger (5 de abril de 2010). "En el año 9999..."
  69. ^ "Archivos de base de datos de Microsoft Access". Documentación de programación de SAS 9.4 y SAS® Viya® 3.5 . La conversión de valores de fecha y hora entre conjuntos de datos SAS y bases de datos de Microsoft Access.
  70. ^ "Enumeración OlMarkInterval (Outlook)". 30 de marzo de 2022.
  71. ^ "Filtrado de elementos mediante palabras clave de consulta". 22 de enero de 2022.
  72. ^ «Diferencias entre el sistema de fechas de 1900 y 1904 – Office». Microsoft . 5 de mayo de 2022 . Consultado el 22 de febrero de 2023 .
  73. ^ "Especificaciones y límites de Excel". Soporte técnico de Microsoft . Consultado el 22 de febrero de 2023 .
  74. ^ Thulin, Anders (6 de abril de 2013). «Interpretación de las marcas de tiempo de NTFS». Forensic Focus . Consultado el 23 de julio de 2019 .
  75. ^ "Las 10 razones más divertidas por las que debería dejar de usar Delphi ahora mismo". Archivado desde el original el 23 de enero de 2008. Consultado el 21 de enero de 2008 .
  76. ^ "Folio TechNote". Archivado desde el original el 9 de febrero de 2008. Consultado el 21 de enero de 2008 .
  77. ^ "Fecha – Javascript". MDN . Consultado el 5 de julio de 2022 .
  78. ^ William Porquet (15 de agosto de 2007). «Preguntas frecuentes sobre el proyecto 2038» . Consultado el 5 de marzo de 2010 .
  79. ^ "Lenguaje contractual de conversión de fecha y hora" (PDF) . Oficina de Servicios de Tecnología de la Información, Nueva York. 23 de noviembre de 2021 . Consultado el 25 de febrero de 2023 .
  80. ^ "Todos los puertos TCP/IP que están en estado TIME_WAIT no se cierran después de 497 días desde el inicio del sistema en Windows Vista, en Windows 7, en Windows Server 2008 y en Windows Server 2008 R2".
  81. ^ "El ordenador se bloquea tras 49,7 días". 8 de mayo de 1999. Archivado desde el original el 8 de mayo de 1999.
  82. ^ "Efecto de histéresis en el ascenso de nivel de threadpool · Issue #51935 · dotnet/runtime". GitHub . Consultado el 25 de febrero de 2024 .
  83. Edgar Alvarez (1 de mayo de 2015). «Para mantener en vuelo un Boeing Dreamliner, hay que reiniciarlo una vez cada 248 días». Engadget . Consultado el 2 de abril de 2020 .
  84. ^ Gareth Corfield (2 de abril de 2020). "Los Boeing 787 deben apagarse y encenderse cada 51 días para evitar que se muestren 'datos engañosos' a los pilotos". The Register . Consultado el 2 de abril de 2020 .
  85. ^ "La respuesta a la pregunta sobre el desbordamiento/envolvimiento de millis() en Arduino". EEWeb . 22 de marzo de 2018.
  86. ^ "Energía: cómo realizar un seguimiento de los milis durante el modo de suspensión".