C 런타임 라이브러리 FIX: DST 버그

기술 자료 번역 기술 자료 번역
기술 자료: 214661 - 이 문서가 적용되는 제품 보기.
이 문서가 보관되었습니다. "그대로" 제공되었으며, 업데이트가 되지 않을 것입니다.
모두 확대 | 모두 축소

이 페이지에서

현상

C-런타임 라이브러리 날짜/시간 함수 일광 절약 시간제 시작 2001년 4월 첫째 주 동안 정확한 시간을 계산하는 못할 수 있습니다. 버그 자체는 다음에서 일주일 후에 해결합니다 일요일입니다. 이 버그는 2000년 문제가 관련이 없습니다.

원인

버그는 C-런타임 라이브러리 cvtdate 도우미 함수 논리 오류로 인해 발생합니다.

현재 상태

Microsoft는 이 문서의 시작 부분에 나열한 Microsoft 제품에서 버그가 이 문제를 확인했습니다. 이 버그는 Visual Studio 6.0 서비스 팩 3에서 수정되었습니다. Visual Studio 서비스 팩에 대한 자세한 내용은 Microsoft 기술 자료에 있는 다음 문서를 참조하십시오.

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

194295 HOWTO: Tell That Visual Studio 6.0 Service Packs Are Installed

추가 정보

문제를 재현하는 방법

다음 샘플 프로그램을 문제를 일으키는:

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

참조

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

속성

기술 자료: 214661 - 마지막 검토: 2014년 2월 23일 일요일 - 수정: 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 Edition
  • Microsoft Visual C++ 4.2 Professional Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
키워드:?
kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbbug kbcrt kbfix kbvs600sp3fix KB214661 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

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