FIX: COleDateTime::SetDate 不能再返回"无效"的状态在 Visual c + +.net 中的正确日期

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 813647
本文已归档。它按“原样”提供,并且不再更新。
在 SP1 中的 CPR-VS.net-修补程序
症状
在 Microsoft Visual c + +.net 中更改的 Microsoft 基础类 (MFC) 和 $ 活动模板库 (ATL) 方法 COleDateTime::SetDate 行为。在.net 版本中键入一个不正确的日期时对象状态不再会设置状态 无效。对象状态而,将转换为日期,以便在最近的有效的值。这可能会导致意外行为的应用程序依赖于 COleDateTime 对象的 无效 状态。行为是不同于附带的 Visual c + +.net 库的.net 版本的 Microsoft 开发人员网络 (MSDN) 信息。
解决方案

服务包信息

若要解决此问题,获得最新的 service pack,Microsoft Visual Studio.net 的。有关详细的信息请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
837234Visual Studio.net 2002 Service Pack 1 中所修复的 bug 的列表

修补程序信息

此修复程序的英文版具有文件属性 (或更高版本) 下表中列出。其格式为协调通用时间 (UTC) 列出日期和时间对这些文件。当您查看文件信息时,将转换为本地时间。若要 UTC 与本地时间之间的时差使用控制面板中的日期和时间工具中的 时区 选项卡。
   Date         Time  Version               Size  File name      --------------------------------------------------------------- 24-Jan-2003  02:06                  2,011,136  Atl70.pdb 12-Sep-2002  16:50                     39,733  afxdao.h 24-Jan-2003  02:06  7.0.9660.0         84,992  atl70.dll 23-Jul-2002  20:08                      3,443  atlbase.cpp 23-Jul-2002  20:08                    163,480  atlbase.h 20-Jan-2003  20:07                     16,396  atlcomtime.inl 23-Jul-2002  20:08                     15,521  atlcore.h 23-Jul-2002  20:08                     43,105  atlimage.h 24-Jan-2003  02:06                     48,090  atlmincrt.lib 24-Jan-2003  02:06                    659,456  atlmincrt.pdb 24-Jan-2003  02:06                  1,003,890  atlsd.lib 24-Jan-2003  02:06                  1,306,624  atlsd.pdb 24-Jan-2003  02:06                    934,264  atls.lib 24-Jan-2003  02:06                  1,306,624  atls.pdb 24-Jan-2003  02:06                     14,546  atl.lib 11-Nov-2002  22:45                     63,284  cstringt.h 05-Dec-2002  20:21                    116,779  dbcore.cpp 12-Sep-2002  16:50                     19,956  makefile 24-Jan-2003  03:36  7.0.9660.0         40,960  mfc70chs.dll 24-Jan-2003  03:36  7.0.9660.0         45,056  mfc70cht.dll 24-Jan-2003  03:36  7.0.9660.0         61,440  mfc70deu.dll 24-Jan-2003  03:22                    527,756  mfc70d.def 24-Jan-2003  03:23                  3,066,694  mfc70d.lib 24-Jan-2003  03:36  7.0.9660.0         57,344  mfc70enu.dll 24-Jan-2003  03:36  7.0.9660.0         61,440  mfc70esp.dll 24-Jan-2003  03:36  7.0.9660.0         61,440  mfc70fra.dll 24-Jan-2003  03:36  7.0.9660.0         61,440  mfc70ita.dll 24-Jan-2003  03:36  7.0.9660.0         49,152  mfc70jpn.dll 24-Jan-2003  03:36  7.0.9660.0         49,152  mfc70kor.dll 24-Jan-2003  03:24                    528,736  mfc70ud.def 24-Jan-2003  03:25  7.0.9660.0      2,066,944  mfc70ud.dll 24-Jan-2003  03:27                  3,978,842  mfc70ud.lib 24-Jan-2003  03:43                    393,034  mfc70u.def 24-Jan-2003  03:57  7.0.9660.0      1,016,832  mfc70u.dll 24-Jan-2003  03:29                  3,042,324  mfc70u.lib 24-Jan-2003  03:42                    392,265  mfc70.def 24-Jan-2003  04:07  7.0.9660.0      1,028,096  mfc70.dll 24-Jan-2003  03:24                  2,287,020  mfc70.lib 12-Sep-2002  16:50                      7,662  mfcdll.mak 24-Jan-2003  03:23                    526,960  mfcs70d.lib 24-Jan-2003  03:25                    468,956  mfcs70ud.lib 24-Jan-2003  03:44                    452,554  mfcs70u.lib 24-Jan-2003  03:43                    505,780  mfcs70.lib 24-Jan-2003  03:36                 10,513,408  mfc.bsc 24-Jan-2003  03:18                 16,598,882  nafxcwd.lib 24-Jan-2003  03:17                  2,093,056  nafxcwd.pdb 24-Jan-2003  03:19                 16,468,250  nafxcw.lib 24-Jan-2003  03:18                  2,068,480  nafxcw.pdb 20-Sep-2002  00:18                     44,958  oledisp1.cpp 24-Jan-2003  03:21                 17,032,292  uafxcwd.lib 24-Jan-2003  03:20                  2,093,056  uafxcwd.pdb 24-Jan-2003  03:22                 16,743,760  uafxcw.lib 24-Jan-2003  03:21                  2,068,480  uafxcw.pdb 05-Nov-2002  18:40                     34,858  viewprev.cpp 24-Jan-2003  03:23  7.0.9660.0      2,072,576  Mfc70d.dll 24-Jan-2003  03:23                  1,791,934  Mfc70d.map 24-Jan-2003  03:23                  7,875,584  Mfc70d.pdb 24-Jan-2003  03:25                  1,842,070  Mfc70ud.map 24-Jan-2003  03:25                  7,908,352  Mfc70ud.pdb 24-Jan-2003  03:57                  9,964,544  Mfc70u.pdb 24-Jan-2003  04:07                  1,149,706  Mfc70.map 24-Jan-2003  04:07                  9,980,928  Mfc70.pdb 24-Jan-2003  03:23                  1,888,256  Mfcs70d.pdb 24-Jan-2003  03:25                  1,896,448  Mfcs70ud.pdb 24-Jan-2003  03:44                  1,888,256  Mfcs70u.pdb 24-Jan-2003  03:43                  1,880,064  Mfcs70.pdb				
更多信息
出现所观察到的行为是由于 COleDateTime 的实现中的更改。新的实现使用 SystemTimeToVariantTime 函数将提供的值转换为 COleDateTime 对象。

请访问下面的 Microsoft 开发人员网络 SystemTimeToVariantTime 函数有关的详细信息的网站:
SystemTimeToVariantTime 函数接受无效日期,然后尝试解决这些问题时解析为 VARIANT 时间。例如对于无效的日期,如 2/29/2001年将解析为 3/1/2001年。但是,COleDateTime::SetDate Visual Studio.net 2002 MSDN 项状态无效 (1) 状态为对象设置。


下面的代码复制问题:

COleDateTime dtDate;CString	szDate;BOOL bOK;bOK = dtDate.SetDate(2003, 2, 29);if((bOK == 0) && (dtDate.GetStatus() == COleDateTime::valid)){	szDate = dtDate.Format();	AfxMessageBox(szDate);}
注意您可能要在应用此修复程序后,重新编译代码。
状态
Microsoft 已经确认这是在本文开头列出的 Microsoft 产品中的问题。 在 Visual Studio.net 2002 Service Pack 1 中,第一次已得到纠正此问题。

属性

文章 ID:813647 - 上次审阅时间:10/26/2013 18:08:40 - 修订版本: 2.2

Microsoft Visual Studio .NET 2002 Academic Edition, Microsoft Visual Studio .NET 2002 企业级结构设计版, Microsoft Visual Studio .NET 2002 企业级开发版, Microsoft Visual Studio .NET 2002 专业版

  • kbnosurvey kbarchive kbmt kbhotfixserver kbqfe kbvs2002sp1sweep kbvs2002sp1fix kbfix kbbug KB813647 KbMtzh
反馈