在我的申请中,我必须找出两个日期之间确切的年,月和日。我试着用下面的剪辑。但答案不正确。我用CTime来表示日期。结果在CTimeSpan类中获得。 CTimeSpan具有GetDays等成员函数。我们将从Total Days中找出年,月和日,但答案是不正确的。有什么办法吗?
提前致谢
答案 0 :(得分:1)
这没有共同的功能。
我的想法是:
COleDateTime date1(1979,12,31,0,0,0),
date2(2004,10,01,0,0,0);
// Get the normal differences
int iYears = date2.GetYear()-date1.GetYear(),
iMonths = date2.GetMonth()-date1.GetMonth(),
iDays = date2.GetDay()-date1.GetDay();
// Problematic underflow of days.
if (iDays<0)
{
// One month less
--iMonths;
// Advance from the start date until we reach the 1st of next month
for (iDays=0; (date1+COleDateTimeSpan(iDays,0,0,0)).GetDay()!=1; ++iDays)
;
// Now get the days from the 1st of the second date to the desired date.
iDays += static_cast<int>((COleDateTime(date2.GetYear(),date2.GetMonth(),1,0,0,0)-date2).GetTotalDays());
}
// underflow of months
if (iMonths<0)
{
--iYears;
iMonths +=12;
}
答案 1 :(得分:0)
我在MSDN Docs中找不到任何CTimeSpan::GetTotalDays()
功能。
无论如何,GetTotalHours / GetTotalMinutes
函数返回完整小时/分钟的数量,并不完全代表TimeSpan值;最好的方法是使用GetTotalSeconds并根据需要进行转换。