FIX: 日光節約時間 Bug C Run-Time 程式庫中

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:214661
本文已封存。本文係以「現狀」提供且不會再更新。
徵狀
C 執行階段程式庫的日期/時間函式可能會失敗,來計算正確的時間,在第一週開始 2001 年 4 月 1,日光節約時間期間。Bug 已修正本身之後在下列的一週星期日。此錯誤與 2000 年問題無關。
發生的原因
Bug 是由 C 執行階段程式庫的 cvtdate Helper 函式中的邏輯錯誤所造成。
狀況說明
Microsoft 已確認這是在本文開頭所列之 Microsoft 產品中的有錯誤。這個 Bug 已經在 Visual Studio 6.0 Service Pack 3 中獲得修正。如需有關 Visual Studio Service Pack 的詳細資訊,請參閱下列文件 「 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 ---------------------------				
y2k year2000

警告:本文為自動翻譯

內容

文章識別碼:214661 - 最後檢閱時間:02/23/2014 08:05:28 - 修訂: 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 KbMtzh
意見反應