CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VC/MFC >  基础类

VC(MFC)中是否有得到2个SYSTEMTIME时间差的函数?

楼主chongl(MFC)2002-09-19 15:25:22 在 VC/MFC / 基础类 提问

类似于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

相关问题

  • vc++库函数.
  • vc++函数问题!
  • 请问一下VC中不用MFC的时候怎样用多线程函数?
  • MFC函数调用问题
  • 关于VC中的函数
  • vc+OnDraw()函数问题?
  • VC全局函数问题??
  • vc的两个函数
  • VC++的函数问题!
  • 在VC++中用API函数是不是不用声明,直接用就可以了?那它和MFC的函数有什么区别?

关键词

  • ularge
  • systemtime
  • ctimespan
  • filetime
  • ftime
  • ctime
  • systemtimetofiletime
  • stime
  • coledatetime
  • dateserial

得分解答快速导航

  • 帖主:chongl
  • ahphone
  • sans
  • gongpingli
  • codemon

相关链接

  • Visual C++类图书
  • Visual C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo