REVISIÓN: error de horario de verano en biblioteca de tiempo de ejecución C

IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.

214661
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Síntomas
Las funciones de fecha y hora de la biblioteca de tiempo de ejecución de C podrían no calcular el tiempo correcto durante la primera semana del horario de verano a partir 1 de del de abril de 2001. Corrige el error sí después de una semana, en la siguiente el domingo. Este error no está relacionado con el problema del año 2000.
Causa
El error suele provocarlo un error lógico en función de biblioteca C-Run-time cvtdate auxiliar.
Estado
Microsoft ha confirmado que se trata de un problema de los productos de Microsoft enumerados al principio de este artículo. Este error se corrigió en Visual Studio 6.0 Service Pack 3. Para obtener más información acerca de los service packs de Visual Studio, consulte en contacto con los artículos siguientes en Microsoft Knowledge Base:

194022 INFO: Visual Studio 6.0 Service Packs, What, Where, Why

194295 HOWTO: Tell That Visual Studio 6.0 Service Packs Are Installed
Más información

Pasos para reproducir este comportamiento

El programa de ejemplo siguiente reproduce el problema:
// ----------------- start of sample program -------------------------// Compiler switches needed : none.#include <time.h>;#include <stdio.h>#include <stdlib.h>#include <stdarg.h>int main (){    struct tm ltm;    time_t tstamp = 0;    ltm.tm_year = 90;	/* First valid year .*/     ltm.tm_mon = 3;		/* April. */     ltm.tm_mday = 1;	/* 1st of the month. */     ltm.tm_hour = 3;	/* At 3:00 am. */     ltm.tm_min = 0;    ltm.tm_sec = 0;    ltm.tm_wday =0;    ltm.tm_yday = 0;    while (ltm.tm_year <= 2005)    {        ltm.tm_isdst = -1;	// mktime indirectly calls cvtdate which has the logic bug.	tstamp = mktime(&ltm);	/* If it's Sunday April 1st, it should also be DST */ 	if (!ltm.tm_wday && !ltm.tm_isdst)	{	    printf("April 01 is the first Sunday in April, %d  \             -it should be DST but tm_isdst says it's \             not!\n", 1900+ltm.tm_year);	    while (!ltm.tm_isdst)	    {		ltm.tm_mday++;		ltm.tm_isdst=-1;		tstamp = mktime(&ltm);	    }	    printf("\tDST is reported as starting on  \             %d/%d/%d\n", 1+ltm.tm_mon, ltm.tm_mday, \ 	    1900+ltm.tm_year);	            ltm.tm_mday = 1;	}	        ltm.tm_year++;	    }    return 0;}// ----------------- end  of sample program ---------------------------				
año2k Año2000

Warning: This article has been translated automatically

Propiedades

Id. de artículo: 214661 - Última revisión: 02/23/2014 08:05:27 - Revisión: 2.4

  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 4.2 Enterprise Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 5.0 Professional
  • Microsoft Visual C++ 6.0 Professional
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbcrt kbfix kbvs600sp3fix KB214661 KbMtes
Comentarios