C++中时间处理

  C++中时间处理并不复杂,特别是MFC里,封装了一堆好用的类。只是平时用得比较少,所以一些常用的操作却也不知如何做起。下面做个总结。

  1. 有个字符串表示时间,如“2011-6-27 19:24:37”或“2011-6-27 下午 07:24:37”,如何从中取出所需的部分?如年月日时分秒?

     CString strTime="2004-10-27 下午 07:24:37"; 
      COleVariant vtime(strTime);
      vtime.ChangeType(VT_DATE);
      COleDateTime time=vtime;
      int n=time.GetHour();
      CString str;
      str.Format("%d",n);
      AfxMessageBox(str);

  2. 时间先后可否比较?例如判断当前时间是否在10:57:40之后?

       CString str1,str2;
       CTime time1=CTime::GetCurrentTime();
       int nYear=time1.GetYear();
       int nMonth=time1.GetMonth();
       int nDay=time1.GetDay();
       int nHour=time1.GetHour();
       int nMinute=time1.GetMinute();
       int nSecond=time1.GetSecond();

 
       CTime time2(nYear,nMonth,nDay,10,57,40);
       if (time1>time2 )
        AfxMessageBox("1");
       else 
        AfxMessageBox("2");

CTime和COleTime相互转换:



COleDateTime   time1(1977,4,16,2,2,2);   //COleDataTime--->CTime      
SYSTEMTIME   systime;     
VariantTimeToSystemTime(time1,   &systime);     
CTime   tm(systime);     
    
time_t   time2=tm.GetTime();   //CTime--->time_t      
COleDateTime   time3(time2);   //time_t--->COleDateTime     

  3. 求当前时间2天前的时间怎么求?如2011-7-1那天2天前的时间就是2011-6-29

       CTime sTime,eTime;                //定义当前系统时间和2天前的时间
        eTime = CTime::GetCurrentTime();  //获取系统时间
        CTimeSpan TimeSpan(2,0,0,0);      //sTime和eTime之间相差2天
        sTime = eTime - TimeSpan;

       其中CTimeSpan的构造函数如下:

       CTimeSpan( );
       CTimeSpan( const CTimeSpan& timeSpanSrc );
       CTimeSpan( time_t time );
       CTimeSpan( LONG lDays, int nHours, int nMins, int nSecs );


 

COleDateTime   time1(1977,4,16,2,2,2);   //COleDataTime--->CTime      
SYSTEMTIME   systime;     
VariantTimeToSystemTime(time1,   &systime);     
CTime   tm(systime);     
    
time_t   time2=tm.GetTime();   //CTime--->time_t      
COleDateTime   time3(time2);   //time_t--->COleDateTime     
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值