Este post no es un ataque a Microsoft. No hay que entenderlo así. He utilizado sus sistemas operativos, aplicaciones y utilidades prácticamente durante toda la vida y hoy en día sigo utilizándolos a diario. Además, como se podrá ver a continuación, el soporte a las empresas y la documentación que proporcionan en caso de tener problemas es impresionante.
Lo que ocurre es que ahora que puedo recordarlo me gustaría recapitular un problema que tienen con los años bisiestos. Y es que no se qué les pasa. ¿Tan difícil es entenderlo? ¿Hay que introducir un tema exclusivo en todos los libros de programación?
Usted, desarrollador de paquetes comerciales, memorice esto de una vez. Si su aplicación maneja fechas, tiene que tener en cuenta los años bisiestos (esos que tienen 29 de febrero).
Bueno, sencillo ¿no? Está clarinete: Según el calendario gregoriano por el que nos regimos, un año es bisiesto si es divisible por 4, excepto el último de cada siglo (aquel divisible por 100), salvo que éste último sea divisible por 400.
Pues en el 2009, cincuenta años después del "FORTRAN Monitor System" seguimos con problemas de año bisiesto. Por favor, pónganse las pilas.
O sea, ¿que el firmware del cacharrín no se esperaba un día más en 2008? No se si reír o llorar pensando en esta noticia de unos pocos días antes...
ACTUALIZACIÓN WINDOWS 95 PARA EL EFECTO 2000 ********************************************************************** Los siguientes problemas se resuelven al instalar la actualización.
La ficha Fecha de modificación del cuadro de diálogo Buscar "Archivos o carpetas" muestra el año en el formato AA. Este formato hace que los años posteriores al 2000 se aparezcan de forma incorrecta. Por ejemplo, si escribe 20/03/2003, aparecerá 20/03/C3. Sin embargo, no tiene efecto alguno en la búsqueda. Si busca los archivos modificados en un intervalo de fechas concreto, escriba la fecha en formato de 2 o 4 dígitos y la búsqueda se realizará según las fechas escritas. El archivo se actualizará únicamente si utiliza la versión 950 o 950a de Windows 95. Este problema no se produce en versiones posteriores de Windows 95. 2. Administrador de archivos de Windows (winfile.exe) 1 de enero de 2000 aparecerá como 1/1/;1 3. Intérprete de comandos (command.com) 4. Selector de fecha y hora (comctl32.dll). 5. Subprograma Marcador de teléfono (dialer.exe) Sucede, por ejemplo, cuando hace una llamada en el año 2000 con el subprograma Marcador. El archivo de registro creado o anexado al finalizar la conexión telefónica muestra incorrectamente la parte del año de la fecha de llamada: 101, 102, 103, etc. 6. Subprograma Fecha y hora del Panel de control (timedate.cpl) 7. Controlador virtual de DHCP (vdhcp.386) Por ejemplo, si inicia una sesión en una LAN después del 1 de marzo del 2000 y ejecuta Winipcfg /all desde Inicio\Ejecutar o Ipconfig /all desde una sesión de DOS, la fecha de obtención es el día anterior. Después del 28/2/2000, la fecha de obtención es el día anterior a la fecha esperada. 8. Microsoft Foundation Class Library (mfc40.dll) 9. Comando Xcopy de DOS (xcopy.exe, xcopy32.exe) 10. Archivo de la biblioteca en tiempo de ejecución de Microsoft (msvcrt40.dll) 11. Automatización OLE (oleaut32.dll, olepro32.dll, stdole2.tlb, asycfilt.dll) |
Los problemas mostrados a continuación se resuelven con la instalación
de esta actualización.
1. Selector de fecha y hora (comctl32.dll).
Antes, cuando establecía la configuración regional en el Panel de
control para que tratara los años con dos dígitos, la función
Selector de fecha y hora no reflejaba correctamente esta fecha.
Esta revisión corrige este problema.
2. Microsoft Wallet (actpmnt.ocx)
Al escribir información de tarjetas de crédito en versiones de
Microsoft Wallet anteriores a la versión 2.1.1383, debe escribir el
mes, el día, y el año para las fechas de caducidad posteriores al
año 2000. Si no lo hace, puede que no se trate la información de la
forma esperada.
Por ejemplo, si escribe un número de tarjeta de crédito con una
fecha de caducidad 01/5, se tratará como el 1 de mayo de año
actual. Este comportamiento ha cambiado en Microsoft Wallet
versión 2.1.1383 y en versiones posteriores.
3. Microsoft Virtual Machine
Se han notificado problemas relacionados con el milenio y con las
máquinas virtuales de Java basadas en las versiones 1.1.1 a 1.1.5
del Java Development Kit de Sun Microsystems. Puede que las
aplicaciones programadas en Java que usan la biblioteca de clases
java.txt.SimpleDateFormat traten incorrectamente las fechas de 4
dígitos.
Por ejemplo, si tiene un subprograma o una aplicación programada en
Java que usa SimpleDateFormat y escribe cuatro dígitos para el año,
puede que las funciones de fecha trunquen el año y usen únicamente
los dos primeros dígitos (por ejemplo, 2000 se convertiría en 20).
4. Subprograma Marcador de teléfono (dialer.exe)
La opción Mostrar el registro de llamadas no muestra correctamente
la fecha cuando finaliza correctamente una llamada telefónica. Si
la fecha del sistema está ajustada al año 2000, se mostrará la
fecha como 100, 101,102, etc.
Por ejemplo, cuando hace una llamada con el subprograma Marcador en
el año 2000. El archivo de registro creado o anexado cuando
finaliza la conexión telefónica muestra incorrectamente la parte
del año de la fecha de llamada: 101, 102, 103, etc.
5. Subprograma de Fecha y hora (timedate.cpl)
Cuando selecciona la fecha 29 de febrero y cambia el año mediante
las flechas arriba y abajo en el cuadro de diálogo Propiedades de
Fecha y hora, el calendario mostrará 29 de febrero cada año,
independientemente de si es un año bisiesto o no. Es un problema de
presentación del subprograma.
6. Propiedades del documento (docprop.dll)
Cuando ve las propiedades de documentos de Microsoft WordPad o
Microsoft Word y establece información de fecha personalizada, no
se acepta el año 2000 como una entrada válida cuando se escribe
como "00". Se supone que todas las fechas de dos dígitos están en
el siglo 20 (es decir, 19xx). Además, si la zona horaria está
establecida a Lejano Oriente, las propiedades de fecha pierden un
día cuando escribe 2000 como año.
7. Inicio (io.sys)
Si se ha iniciado el sistema en el mismo momento en que la fecha
del Reloj de tiempo real (RTC) pasa a medianoche, puede que el
reloj del sistema muestra valores incorrectos para la fecha o la
hora. Si reinicia el equipo se habrá solucionado este problema.
Por ejemplo, encienda el equipo y, a continuación, reinícielo en el
mismo instante en que el reloj interno del sistema pasa de
11:59:59 p.m. a 12:00:00 a.m. Puede que el sistema muestra un día o
un año incorrectos hasta que se reinicie el equipo y se reinicie a
su vez el reloj interno. Es un problema de comprobación y no está
relacionado con el año 2000.
8. Controlador virtual de DHCP (vdhcp.386)
Winipcfg /all - Las direcciones IP obtenidas el 01/3/2000 o en una
fecha posterior se considerarán como obtenidas el día anterior. La
fecha del sistema se mostrará correctamente, pero el cliente de
DHCP notificará como fecha el día anterior.
Por ejemplo, si conecta con una LAN después del 1 de marzo del
2000, y ejecuta Winipcfg /all desde Inicio\Ejecutar o Ipconfig /all
desde una sesión de DOS, la fecha de obtención es el día anterior.
Después del 28/2/2000, la fecha de la dirección obtenida es el día
anterior a la fecha esperada.
9. Microsoft Data Access (msdadc.dll, msadce.dll)
El archivo msdadc.dll forma parte de los componentes básicos de OLE
DB y de Microsoft Data Access Components (MDAC). Si programa con
ADO y sus recordsets de ADO incluyen tipos de datos de fecha, como
adDate, adDBDate, adFileTime o adDBTimeStamp, y usa un formato de
fecha que utiliza puntos como separador de fechas en lugar de
barras (por ejemplo, 01.01.98 en lugar de 01/01/98), y especifica
un año menos que 60, puede que la dll de conversión de datos
(msdadc.dll) traduzca la fecha como una hora. Por ejemplo, puede
que 01.01.01 (1 de enero de 2001) se convierta a 01:01:01 (30 de
diciembre de 1899, 1:01:01 a.m.).
10. Microsoft Foundation Class Library (mfc40.dll)
Puede que después del año 2000, los programas que usan la función
COleDateTime analicen incorrectamente una fecha. Para ver un
ejemplo de esto después del año 2000, ejecute el archivo de
información del sistema (msinfo32.exe) desde
Programas\Accesorios\Herramientas del sistema y guarde el archivo.
Abra este archivo de extensión .nfo y seleccione Propiedades en el
menú Archivo. Puede que la marca de fecha muestra una fecha
incorrecta. Por ejemplo, puede ver 05/02/2000 como 5/02/100.
11. Comando Xcopy de DOS (xcopy32.mod)
Al usar xcopy en modo real con el parámetro opcional /D:fecha,
xcopy no acepta años en formato de dos dígitos, excepto para el
intervalo de años 80 a 99. Se mostrará el mensaje "Fecha no
válida". Al usar xcopy en modo protegido (desde Windows), se
aceptarán fechas de dos dígitos, pero no se reconocerán como
pertenecientes al siglo 20 (05/02/01 se verá como 05/02/1901).
No hay comentarios:
Publicar un comentario