El problema del año bisiesto (también conocido como error del año bisiesto o error del día bisiesto ) es un problema tanto para la documentación digital (relacionada con la computadora) como para las situaciones de almacenamiento de datos y documentación no digital que resulta de un cálculo incorrecto de qué años son años bisiestos. , o de manipular fechas sin tener en cuenta la diferencia entre años bisiestos y años comunes.
Categorias
Los errores de los años bisiestos generalmente se dividen en dos categorías, según la cantidad de impacto que pueden tener en el uso en el mundo real: [1]
- Aquellos que conducen a condiciones de error, como excepciones, códigos de retorno de error, variables no inicializadas o bucles sin fin
- Aquellos que conducen a datos incorrectos, como problemas uno por uno en consultas de rango o agregación
Ejemplos de
Pitón
El siguiente código de Python es un ejemplo de un error de año bisiesto de Categoría 1. Funcionará correctamente hasta today
el 29 de febrero. Luego, intentará crear un 29 de febrero de un año común, que no existe. El date
constructor generará un ValueError
con el mensaje "el día está fuera de rango para el mes". [2]
desde fecha y hora fecha de importación hoy = fecha . hoy () más tarde = hoy . reemplazar ( año = hoy . año + 1 )
Windows C ++
El siguiente código de Windows C ++ es un ejemplo de un error de año bisiesto de Categoría 1. Funcionará correctamente hasta st
el 29 de febrero. Luego, intentará crear un 29 de febrero de un año común, que no existe. Pasar esto a cualquier función que acepte una SYSTEMTIME
estructura probablemente fallará.
Por ejemplo, la SystemTimeToFileTime
llamada que se muestra aquí devolverá un código de error. Dado que ese valor de retorno no está marcado (lo cual es extremadamente común), esto resultará en ft
que no se inicialice. [3]
SYSTEMTIME st ; FILETIME ft ;GetSystemTime ( & st ); st . wYear ++ ;SystemTimeToFileTime ( & st , & ft );
Microsoft C #
El siguiente código .NET C # es un ejemplo de un error de año bisiesto de Categoría 1. Funcionará correctamente hasta dt
el 29 de febrero. Luego, intentará crear un 29 de febrero de un año común, que no existe. El DateTime
constructor lanzará un ArgumentOutOfRangeException
. [4]
DateTime dt = DateTime . Ahora ; Resultado de DateTime = nuevo DateTime ( dt . Año + 1 , dt . Mes , dt . Día );
JavaScript
El siguiente código JavaScript es un ejemplo de un error de año bisiesto de Categoría 2. Funcionará correctamente hasta dt
el 29 de febrero, como el 29 de febrero de 2020. Luego, intentará establecer el año en 2021. Dado que 2021-02-29 no existe, el Date
objeto avanzará hasta la siguiente fecha válida, que es 2021-03-01. [5]
var dt = nueva fecha (); dt . setFullYear ( dt . getFullYear () + 1 );
Algoritmo de año bisiesto incorrecto (muchos idiomas)
El siguiente código es un ejemplo de un error de año bisiesto que se ve en muchos idiomas. Puede causar un impacto de Categoría 1 o Categoría 2, según para qué se utilice el resultado. Supone incorrectamente que un año bisiesto ocurre exactamente cada cuatro años. [6]
bool isLeapYear = año % 4 == 0 ;
El algoritmo de año bisiesto correcto se explica en Algoritmo de año bisiesto .
Ocurrencias
Ha habido muchas apariciones de errores de año bisiesto:
- En 2020, una gran cantidad de errores de años bisiestos se catalogaron en la Lista de errores de días bisiestos de 2020 en el sitio web Code of Matt . [7]
- En 2016, un error de año bisiesto en el sistema de transporte de equipaje en el aeropuerto de Düsseldorf el 29 de febrero provocó que más de 1.200 piezas de equipaje perdieran sus vuelos. [8]
- En 2016, una gran cantidad de errores de años bisiestos se catalogaron en la Lista de errores de días bisiestos de 2016 en el sitio web Code of Matt . [9]
- En 2012, Microsoft Azure se desconectó por el error del año bisiesto el 28 de febrero. A las 5:45 pm PST, el equipo de Windows Azure se dio cuenta de un problema, aparentemente debido a un cálculo de tiempo incorrecto para el año bisiesto.
- En 2012, el historial de chat de Gmail mostraba una fecha del 31 de diciembre de 1969 para todos los chats guardados el 29 de febrero . [ cita requerida ]
- En 2012, los dispositivos de navegación por satélite TomTom fallaron debido a un error de año bisiesto que apareció por primera vez el 31 de marzo [10].
- La PlayStation 3 de Sony trató incorrectamente a 2010 como un año bisiesto, por lo que el inexistente 29 de febrero de 2010 se mostró el 1 de marzo de 2010 y provocó un error de programa . [11]
- A la medianoche del 31 de diciembre de 2008, muchos [12] modelos Zune 30 de primera generación se congelaron. [13] [14] Microsoft declaró que el problema fue causado por el controlador de reloj interno escrito por Freescale y la forma en que el dispositivo maneja un año bisiesto . Se solucionó automáticamente 24 horas después, pero una "solución" intermedia para aquellos que no deseaban esperar era agotar la batería del dispositivo y luego recargarla después del mediodía UTC del 1 de enero de 2009. [15] [16]
- En 1996, dos plantas de fundición de aluminio en Tiwai Point , Nueva Zelanda, y Bell Bay , Tasmania, Australia, experimentaron un error de año bisiesto el 31 de diciembre, cuando cada una de las 660 computadoras que controlaban las líneas de fundición se apagó al filo de la medianoche simultáneamente sin previo aviso. Las computadoras no estaban programadas para manejar el día 366 del año. Los costos de reparación se estimaron en más de 1 millón de dólares neozelandeses . [17]
- Microsoft Excel , desde sus primeras versiones, ha considerado incorrectamente que 1900 es un año bisiesto y, por lo tanto, el 29 de febrero se produce entre el 28 de febrero y el 1 de marzo de ese año. El error se originó en Lotus 1-2-3 y se implementó deliberadamente en Excel con el propósito de compatibilidad con versiones anteriores . Microsoft ha escrito un artículo sobre este error, explicando las razones para tratar 1900 como un año bisiesto. [18] Este error se ha convertido en un requisito de la especificación Ecma Office Open XML (OOXML). [19] [20]
Ver también
Referencias
- ^ Johnson-Pint, Matt. "¿Cuáles son algunos ejemplos de errores de año bisiesto?" . Desbordamiento de pila . Consultado el 5 de febrero de 2020 .
- ^ Johnson-Pint, Matt. "Python - Reemplazo del año" . Desbordamiento de pila . Consultado el 29 de febrero de 2020 .
- ^ Johnson-Pint, Matt. "Manipulación de estructura Win32 / C ++ SYSTEMTIME" . Desbordamiento de pila . Consultado el 5 de febrero de 2020 .
- ^ Johnson-Pint, Matt. ".NET / C # - Construcción a partir de partes de fecha" . Desbordamiento de pila . Consultado el 5 de febrero de 2020 .
- ^ Johnson-Pint, Matt. "JavaScript - Agregar año (s)" . Desbordamiento de pila . Consultado el 5 de febrero de 2020 .
- ^ Johnson-Pint, Matt. "Determinar si un año es bisiesto" . Desbordamiento de pila . Consultado el 5 de febrero de 2020 .
- ^ Johnson-Pint, Matt. "Lista de errores del día bisiesto de 2020" . Código de Matt . Consultado el 9 de marzo de 2020 .
- ^ "El hipo del aeropuerto deja a cientos de pasajeros sin pantalones" . El Local (de) . Consultado el 5 de febrero de 2020 .
- ^ Johnson-Pint, Matt. "Lista de errores del día bisiesto de 2016" . Código de Matt . Consultado el 5 de febrero de 2020 .
- ^ "TomTom de navegación por satélite GPS dispositivos afectados por 'año bisiesto error ' " . BBC News . Consultado el 5 de febrero de 2020 .
- ^ "Sony corrige error de año bisiesto de PS3" . Metro . 2 de marzo de 2010 . Consultado el 10 de octubre de 2019 .
- ^ "Inicio - Respuestas de Microsoft" . Forums.zune.net. Archivado desde el original el 30 de agosto de 2009 . Consultado el 27 de julio de 2011 .
- ^ John Herrman (31 de diciembre de 2008). "30GB Zunes fallando en todas partes, todos a la vez" . Gizmodo.com . Consultado el 27 de julio de 2011 .
- ^ Geere, Duncan. "ROMPIENDO: Zunes en todo el mundo golpeados por accidente misterioso: Tech Digest" . Techdigest.tv . Consultado el 27 de julio de 2011 .
- ^ "Preguntas frecuentes de Zune 30" . Microsoft . 31 de diciembre de 2008 . Consultado el 1 de enero de 2009 .
- ^ Zadegan, Bryant (3 de enero de 2009). "Una lección sobre bucles infinitos" . AeroXperience . Consultado el 5 de enero de 2009 .
- ^ Towler, Jim. "Error de software de año bisiesto da" falla de un millón de dólares " " . The RISKS Digest . Comité de Computación y Políticas Públicas de la ACM . Consultado el 5 de febrero de 2020 .
- ^ Excel asume incorrectamente que el año 1900 es bisiesto . Consultado el 1 de mayo de 2019.
- ^ Formatos de archivo XML estándar ECMA-376 / Open Office . Consultado el 10 de septiembre de 2016.
- ^ ISO / IEC 29500 / Formatos de archivo XML de Open Office . Consultado el 10 de septiembre de 2016.