VC(MFC)中是否有得到2个SYSTEMTIME时间差的函数?
类似于vb中的DateSerial
如:vb中 DateSerial(2002, 9, 1) - DateSerial(2002, 8, 1)=31
高手们指教
问题点数:100、回复次数:6Top
1 楼ahphone(阿丰--重出江湖,陌生的容颜)回复于 2002-09-19 15:30:51 得分 20
CTimeSpan
还有一个 COle???TimeSpanTop
2 楼sans(长风半日)回复于 2002-09-19 15:40:45 得分 30
CTime 和CTimeSpan ,例如:
// example for CTime::operator +, -
CTime t1( 1999, 3, 19, 22, 15, 0 ); // 10:15PM March 19, 1999
CTime t2( 1999, 3, 20, 22, 15, 0 ); // 10:15PM March 20, 1999
CTimeSpan ts = t2 - t1; // Subtract 2 CTimes
ASSERT( ts.GetTotalSeconds() == 86400L );
ASSERT( ( t1 + ts ) == t2 ); // Add a CTimeSpan to a CTime.
ASSERT( ( t2 - ts ) == t1 ); // Subtract a CTimeSpan from a CtimeTop
3 楼gongpingli(跃飞)回复于 2002-09-19 15:41:08 得分 30
先转换成COleDateTime类,用这两个类对象减得到COleTimeSpan类型,即可,我一直这么用的。
SYSTEMTIME &stTimeF;
SYSTEMTIME &stTimeS;
。。。。。。。。。。。
COleDateTime dTimeF(stTimeF);
COleDateTime dTimeS(stTimeS);
COleDateTimeSpan dTimeSpan = dTimeF - dTimeS;
int nSecnonSpan = dTimeSpan.GetTotalSeconds();Top
4 楼codemon(珍爱生命,远离美女)回复于 2002-09-19 15:57:28 得分 20
SYSTEMTIME sTime1;
SYSTEMTIME sTime2;
...
...
ULARGE_INTEGER fTime1;/*FILETIME*/
ULARGE_INTEGER fTime2;/*FILETIME*/
SystemTimeToFileTime(&sTime1,(FILETIME*)&fTime1);
SystemTimeToFileTime(&sTime2,(FILETIME*)&fTime2);
unsigned __int64 dft=fTime2.QuadPart-fTime1.QuadPart;
得到的是64位整型,最小单位是100纳秒。Top
5 楼chongl(MFC)回复于 2002-09-19 16:06:55 得分 0
谢谢楼上各位!
^_^Top
6 楼swordbroken(断剑书生)回复于 2002-09-19 16:15:55 得分 0
Convert the SYSTEMTIME structure to a FILETIME structure.
Copy the resulting FILETIME structure to a ULARGE_INTEGER structure.
Use normal 64-bit arithmetic on the ULARGE_INTEGER value.
以上三步可以求得两个SYSTEMTIME的差值
用到的API:
1.SystemTimeToFileTime()
2.ULARGE_INTEGER.LowPart = FILETIME.dwLowDateTime;
ULARGE_INTEGER.HighPart = FILETIME.dwHighDateTime;
3.对ULARGE_INTEGER进行加减操作,不过有一个基数我忘了,你自己查查把。
还有一个FileTimeToSystemTime()可以转换回去。Top




