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

Seleccione idioma Seleccione idioma
Id. de artículo: 214661 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

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 ---------------------------
				

Referencias

http://msdn.microsoft.com/en-us/visualc/default.aspx

Propiedades

Id. de artículo: 214661 - Última revisión: domingo, 23 de febrero de 2014 - Versión: 2.4
La información de este artículo se refiere a:
  • 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
Palabras clave: 
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbcrt kbfix kbvs600sp3fix KB214661 KbMtes
Traducción automática
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.
Haga clic aquí para ver el artículo original (en inglés): 214661

Enviar comentarios

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com