stringtranslate.com

Problema del año bisiesto

El problema del año bisiesto (también conocido como el error del año bisiesto o el error del día bisiesto ) es un problema tanto para la documentación digital (informática) como para las situaciones de almacenamiento de datos no digitales que resulta de errores en el cálculo de qué años son bisiestos o de la manipulación de fechas sin tener en cuenta la diferencia entre los años bisiestos y los años comunes.

Categorías

Los errores de los años bisiestos suelen dividirse en dos categorías, según el impacto que puedan tener en el uso en el mundo real: [1]

  1. Aquellos que conducen a condiciones de error, como excepciones, códigos de retorno de error, variables no inicializadas o bucles infinitos.
  2. Aquellos que conducen a datos incorrectos, como problemas de errores de uno en uno en consultas de rango o agregación.

Ejemplos

Pitón

El siguiente código Python es un ejemplo de un error de año bisiesto de categoría 1. Funcionará correctamente hasta que todayllegue el 29 de febrero. Luego, intentará crear un 29 de febrero de un año común, que no existe. El dateconstructor lanzará un ValueErrorcon el mensaje "el día está fuera del rango para el mes". [2]

desde  datetime  importar  fecha hoy  =  date . today () más tarde  =  hoy . replace ( año  =  hoy . year  +  1 )

C++ de Windows

El siguiente código de Windows C++ es un ejemplo de un error de categoría 1 de año bisiesto. Funcionará correctamente hasta que la fecha actual pase a ser el 29 de febrero de un año bisiesto. Luego, se modificará stpara representar el 29 de febrero de un año común, una fecha que en realidad no existe. Es probable que no se pueda pasar sta cualquier función que acepte una SYSTEMTIMEestructura como parámetro.

Por ejemplo, la SystemTimeToFileTimellamada 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 hará que ftno se inicialice. [3]

TIEMPO DEL SISTEMA st ; TIEMPO DEL ARCHIVO ft ;  ObtenerHoraDelSistema ( & st ) ; st.wAño ++ ;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 que dtllegue el 29 de febrero. Luego, intentará crear un 29 de febrero de un año común, que no existe. El DateTimeconstructor generará un error ArgumentOutOfRangeException. [4]

DateTime dt = DateTime . Ahora ; DateTime resultado = new 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 que dtllegue el 29 de febrero, como el 29 de febrero de 2020. Luego, intentará establecer el año en 2021. Como el 29 de febrero de 2021 no existe, el Dateobjeto avanzará hasta la siguiente fecha válida, que es el 1 de marzo de 2021. [5]

var dt = new Fecha ( ) ; dt.setFullYear ( dt.getFullYear ( ) + 1 ) ;      

Algoritmo incorrecto para el año bisiesto (varios lenguajes)

El código siguiente es un ejemplo de un error de año bisiesto que se observa en muchos lenguajes. 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 correcto del año bisiesto se explica en Algoritmo del año bisiesto .

Ocurrencias

Véase también

Referencias

  1. ^ Johnson-Pint, Matt. "¿Cuáles son algunos ejemplos de errores de año bisiesto?". Stack Overflow . Consultado el 5 de febrero de 2020 .
  2. ^ Johnson-Pint, Matt. "Python - Reemplazando el año". Desbordamiento de pila . Consultado el 29 de febrero de 2020 .
  3. ^ Johnson-Pint, Matt. "Manipulación de la estructura SYSTEMTIME en Win32/C++". Desbordamiento de pila . Consultado el 5 de febrero de 2020 .
  4. ^ Johnson-Pint, Matt. ".NET / C# - Construcción a partir de partes de fecha". Desbordamiento de pila . Consultado el 5 de febrero de 2020 .
  5. ^ Johnson-Pint, Matt. "JavaScript - Adición de año(s)". Desbordamiento de pila . Consultado el 5 de febrero de 2020 .
  6. ^ Johnson-Pint, Matt. "Determinar si un año es bisiesto". Stack Overflow . Consultado el 5 de febrero de 2020 .
  7. ^ Excel supone incorrectamente que el año 1900 es bisiesto. Consultado el 1 de mayo de 2019.
  8. ^ Formatos de archivo estándar ECMA-376/Open Office XML. Consultado el 10 de septiembre de 2016.
  9. ^ ISO/IEC 29500 / Formatos de archivos XML de Open Office. Consultado el 10 de septiembre de 2016.
  10. ^ Towler, Jim (7 de enero de 1997). "Leap-Year software bug provides 'Million-dollar glitch'". The RISKS Digest . 18 (74). Comité de Informática y Política Pública de la ACM . Consultado el 5 de febrero de 2020 .
  11. ^ "La última picadura del bicho". BBC News . 5 de enero de 2001.
  12. ^ "Los sistemas 7-Eleven se vieron afectados por un fallo similar al del Y2K" . Consultado el 10 de marzo de 2023 .
  13. ^ "El problema del año 2000 afecta al ferrocarril noruego a finales de año". 1 de enero de 2001. Consultado el 10 de marzo de 2023 .
  14. ^ "Inicio - Respuestas de Microsoft". Forums.zune.net. Archivado desde el original el 30 de agosto de 2009. Consultado el 27 de julio de 2011 .
  15. ^ John Herrman (31 de diciembre de 2008). "Los Zunes de 30 GB fallan en todas partes, todos a la vez". Gizmodo.com . Consultado el 27 de julio de 2011 .
  16. ^ Geere, Duncan (31 de diciembre de 2008). "ÚLTIMA HORA: Zunes en todo el mundo sufre un accidente misterioso: Tech Digest". Techdigest.tv . Consultado el 27 de julio de 2011 .
  17. ^ "Preguntas frecuentes sobre Zune 30". Microsoft . 31 de diciembre de 2008. Archivado desde el original el 2 de enero de 2009 . Consultado el 1 de enero de 2009 .
  18. ^ Zadegan, Bryant (3 de enero de 2009). "Una lección sobre bucles infinitos". AeroXperience . Consultado el 5 de enero de 2009 .
  19. ^ "Sony corrige el error del año bisiesto en PS3". Metro . 2 de marzo de 2010 . Consultado el 10 de octubre de 2019 .
  20. ^ "Los dispositivos de navegación por satélite TomTom afectados por el 'error del año bisiesto' del GPS". BBC News . 3 de abril de 2012 . Consultado el 5 de febrero de 2020 .
  21. ^ Johnson-Pint, Matt (29 de febrero de 2016). «Lista de errores del día bisiesto de 2016». Código de Matt . Consultado el 5 de febrero de 2020 .
  22. ^ "Un contratiempo en el aeropuerto deja a cientos de pasajeros sin pantalones". The Local (en inglés) . Marzo de 2016. Consultado el 5 de febrero de 2020 .
  23. ^ Johnson-Pint, Matt (29 de febrero de 2020). «Lista de errores del día bisiesto de 2020». Código de Matt . Consultado el 9 de marzo de 2020 .
  24. ^ "Lista de errores del día bisiesto de 2024". Código de Matt . 2024-02-29 . Consultado el 2024-02-29 .
  25. ^ "Las estaciones de servicio vuelven a funcionar tras un corte de un día atribuido a un fallo del año bisiesto". NZ Herald . 2024-03-01 . Consultado el 2024-02-29 .