我在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");
并传递给
ParseDateTime
的COleDateTime
。-3。我也尝试使用
SetDateTime
的COleDateTime
在那之后,我得到的错误值是1-2分钟。或多或少。
我以前从未见过它,在互联网上也找不到任何东西。每个人都说abot损失精度是一秒而不是一分钟。
请给我一些建议!
谢谢
最佳答案
我认为问题在于COleDateTime在内部使用浮点数进行存储,该值表示自1899年12月30日以来的天数。
随着天数变大,较小字段(如分钟)的精度降低。例如,浮点数可以准确地存储值1000000和0.0000001,但不能存储1000000.0000001。它没有足够的精度。
MSDN文档中提示了此限制:
因此,基本上,如果您想要精确的时间,请将日期设置为1899年12月30日。
似乎Microsoft可以设计该类来将“天”部分存储为整数,但是,这太容易了。