vc里面如何计算时间差?
程序的一个地方有如下一行代码:
CTime CurrentTime1=CTime::GetCurrentTime();
程序的另外一个地方有如下一行代码:
CTime CurrentTime2=CTime::GetCurrentTime();
然后取它们的时间差,能否用:
CTime time = CurrentTime2 - CurrentTime1;
我的CTime time = CurrentTime2 - CurrentTime1;这一行报错。
error C2679: binary '=' : no operator defined which takes a right-hand operand of type 'class CTimeSpan' (or there is no acceptable conversion)
请问该如何解决?
[解决办法]
我记得CTime类有年,月,日,小时,分钟,秒成员变量的,你可以分别取年,月,日,小时,分钟,秒,做减法,就得出时间差了。
[解决办法]
CTimeSpan
[解决办法]
CTime CurrentTime1=CTime::GetCurrentTime();
程序的另外一个地方有如下一行代码:
CTime CurrentTime2=CTime::GetCurrentTime();
然后取它们的时间差,能否用:
CSpanTime spantime= CurrentTime2 - CurrentTime1;
[解决办法]
CTimeSpan
:An amount of time, which is internally stored as the
number of seconds in the time span.
CTime time1 = CTime::GetCurrentTime();CTime time2 = CTime::GetCurrentTime();CTimeSpan time3 = time2 - time1;
[解决办法]
// MSDNCTime t1(1999, 3, 19, 22, 15, 0); // 10:15 PM March 19, 1999CTime t2(1999, 3, 20, 22, 15, 0); // 10:15 PM March 20, 1999CTimeSpan ts = t2 - t1; // Subtract 2 CTimesATLASSERT(ts.GetTotalSeconds() == 86400L);ATLASSERT((t1 + ts) == t2); // Add a CTimeSpan to a CTime.ATLASSERT((t2 - ts) == t1); // Subtract a CTimeSpan from a CTime.
[解决办法]
还有一个办法,简单一点,
DWORD dwTick1 = GetTickCount();
...
DWORD dwTick2 = GetTickCount();
DWORD dwTimeGap = dwTick2 - dwTick1; // 单位:毫秒
[解决办法]
DWORD dwBeginTime = ::GetTickCount() // OR timeGetTime();
DWORD dwEndTime = ::GetTickCount();
DWORD dwSpaceTime = dwEndTime - dwBeginTime;
[解决办法]
GetCurrentTime();如果我在你第二次GET之前人为改变了系统日期,那。。。会不会出错?
你不会是运行了几个月再来计算时间差吧?
如果两次时间间隔很短的,用
GetTickCount(); 多精确的,用这,就它了。
[解决办法]