我在MFC中使用COleDateTime奋斗了几天。
我的CTime具有正确的值。正确设置年,日,月,小时,分钟和秒。
我尝试了几种方法将CTime转换为COleDateTime:

-1。我将CTim e数据放入COleDateTime的构造函数

COleDateTime(int nYear,int nMonth,int nDay, int nHour, int nMin,int nSec );

-2。我将CTime格式化为time.Format("%m/%d/%y %H:%M:%S");
并传递给ParseDateTimeCOleDateTime

-3。我也尝试使用SetDateTimeCOleDateTime
在那之后,我得到的错误值是1-2分钟。或多或少。
我以前从未见过它,在互联网上也找不到任何东西。每个人都说abot损失精度是一秒而不是一分钟。
请给我一些建议!
谢谢

最佳答案

我认为问题在于COleDateTime在内部使用浮点数进行存储,该值表示自1899年12月30日以来的天数。

随着天数变大,较小字段(如分钟)的精度降低。例如,浮点数可以准确地存储值1000000和0.0000001,但不能存储1000000.0000001。它没有足够的精度。

MSDN文档中提示了此限制:



因此,基本上,如果您想要精确的时间,请将日期设置为1899年12月30日。

似乎Microsoft可以设计该类来将“天”部分存储为整数,但是,这太容易了。

10-06 13:50