CTime t1,t2;
t1.GetTime();
t2.GetTime();
t2-t1?????

解决方案 »

  1.   

    Example// example for CTimeSpan::operator +, -
    CTimeSpan ts1( 3, 1, 5, 12 ); // 3 days, 1 hour, 5 min, and 12 sec
    CTimeSpan ts2( 100 ); // 100 seconds
    CTimeSpan ts3 = ts1 + ts2;
    ASSERT( ts3.GetSeconds() == 52 ); // 6 mins, 52 secs// 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 Ctime.
      

  2.   

    计算两个日期的差值的程序 
    //dtmfnct.h 
    //char=8bt 
    //int=32bt 
    //pure c ++ code 
    #ifndef dtmfnctH 
    #define dtmfnctH 
    #include <math.h> 
    //------------------------------------------------------------------------ 
    int __fastcall strTOdate(char *); 
    int __fastcall ymdTOdate(int, int, int); 
    int __fastcall dateTOymd(int &, int &, int &, int); 
    //--------//--------//--------//--------//--------//-------- 
    int __fastcall strTOtime(char *); 
    int __fastcall hmsTOtime(int, int, int); 
    int __fastcall timeTOhms(int &,int &,int &, int); 
    //--------//--------//--------//--------//--------//-------- 
    int __fastcall IsLeapYear(int); 
    int __fastcall MonthMaxDay(int, int); 
    int __fastcall MonthTtlDay(int, int); 
    int * __fastcall MonthMaxDayTable(int); 
    int * __fastcall MonthTtlDayTable(int); 
    //------------------------------------------------------------------------ 
    //字串形式的日期(不包括时间)转换为数值形式, 
    //例子: "2000_01_30" -> 730148 
    // "2000_09_45" -> -1(error) 
    int __fastcall strTOdate(char * vstr) 
    {
    int i,y,m,d; 
    // 
    i = y = m = d = 0; 
    // 
    for(;vstr[i]!=0;i++) 
    {
    if(vstr[i]>='0' && vstr[i]<='9') 
    y = y * 10 + (vstr[i]-'0'); 
    else 
    break; 

    // 
    while(vstr[i]!=0 &&(vstr[i]<'0' || vstr[i]>'9')) i++; 
    // 
    for(;vstr[i]!=0;i++) 
    {
    if(vstr[i]>='0' && vstr[i]<='9') 
    m = m * 10 + (vstr[i]-'0'); 
    else 
    break;

    // 
    while(vstr[i]!=0 &&(vstr[i]<'0' || vstr[i]>'9')) i++; 
    // 
    for(;vstr[i]!=0;i++)
    {
    if(vstr[i]>='0' && vstr[i]<='9') 
    d = d * 10 + (vstr[i]-'0'); 
    else
    break; 

    // 
    return(ymdTOdate(y,m,d)); 
    }
    //年/月/日的数值转换为数值日期 
    //例子: 0001_01_01 -> 0 
    // 2300_90_08 -> -1 
    //此函数经过 0001_01_01 -- 32767_12_31 的测试. 
    int __fastcall ymdTOdate(int vy, int vm, int vd) 
    {
    if(vy<1 || vy>32767 || vm<1 || vm>12 || vd<1 || vd>MonthMaxDay(vy,vm)) 
    return(-1); 
    // 
    vd += MonthTtlDay(vy,vm)-1; 
    vy --; 
    return((vy*365 + vy/4 - vy/100 + vy/400)+vd); 
    } //数值日期转换为年/月/日的数值 
    //数值日期就是从0001_01_01开始计算的天数,启始数值为 0 
    //此函数经过 0001_01_01 -- 32767_12_31 的测试. 
    int __fastcall dateTOymd(int& ry, int& rm, int& rd, int vd) 
    {
    if(vd<0) 
    {
    ry = 0; 
    rm = 0; 
    rd = 0; 
    return(0); 

    //--------//-------- 
    ry = vd / 365.2425; 
    vd -= ry*365 + ry/4 - ry/100 + ry/400; 
    // 
    if(IsLeapYear(++ry)) 
    rm = 366; 
    else 
    rm = 365; 
    // 
    if(vd>=rm) 
    {
    vd -= rm; 
    ry ++; 

    //--------//-------- 
    rm = vd / 30.436875 + 1 ; 
    vd -= MonthTtlDay(ry,rm); 
    if(++vd<=0) 
    {
    vd += MonthMaxDay(ry,rm); 
    rm --;

    else if(vd>MonthMaxDay(ry,rm)) 
    {
    vd -= MonthMaxDay(ry,rm); 
    rm ++; 

    //--------//-------- 
    rd = vd; 
    // 
    return(1); 
    }//--------//--------//--------//--------//--------//-------- 
    int __fastcall strTOtime(char *vstr) 
    {
    int i,h,m,s; 
    // 
    i = h = m = s = 0; 
    // 
    for(;vstr[i]!=0;i++) 
    {
    if(vstr[i]>='0' && vstr[i]<='9') 
    h = h * 10 + (vstr[i]-'0'); 
    else 
    break; 

    // 
    while(vstr[i]!=0 &&(vstr[i]<'0' || vstr[i]>'9')) i ++; 
    // 
    for(;vstr[i]!=0;i++) 
    {
    if(vstr[i]>='0' && vstr[i]<='9') 
    m = m * 10 + (vstr[i]-'0'); 
    else
    break;
    }
    // 
    while(vstr[i]!=0 &&(vstr[i]<'0' || vstr[i]>'9')) i ++; 
    // 
    for(;vstr[i]!=0;i++) 
    {
    if(vstr[i]>='0' && vstr[i]<='9') 
    s = s * 10 + (vstr[i]-'0'); 
    else
    break;
    }
    // 
    return(hmsTOtime(h,m,s)); 
    }// 
    int __fastcall hmsTOtime(int vh, int vm, int vs) 
    {
    if((vh=(((vh*60 + vm)*60+vs)*1000)%86400000)<0) 
    vh += 86400000; 
    return(vh); 
    }// 
    int __fastcall timeTOhms(int& rh, int& rm, int& rs, int vt) 
    {
    if((vt%=86400000)<0) 
    vt +=86400000; 
    // 
    rh = vt / 3600000 ; 
    rm = (vt % 3600000)/60000; 
    rs = (vt % 60000 )/1000 ; 
    // 
    return(vt%1000); 
    }//--------//--------//--------//--------//--------//-------- 
    //以下各个函数没有安全检测功能,须慎重. 
    int __fastcall IsLeapYear(int vy) 
    {
    return(((vy%4)==0) && (((vy%100)!=0)||((vy%400)==0))); 
    }int __fastcall MonthMaxDay(int vy, int vm) 
    {
    return(MonthMaxDayTable(vy)[vm-1]); 
    }int __fastcall MonthTtlDay(int vy, int vm) 
    {
    return(MonthTtlDayTable(vy)[vm-1]); 
    }// 
    int* __fastcall MonthMaxDayTable(int vy) 
    {
    static int mmd0[12]={31,28,31,30,31,30,31,31,30,31,30,31}; 
    static int mmd1[12]={31,29,31,30,31,30,31,31,30,31,30,31}; 
    // 
    if(IsLeapYear(vy)) 
    return(mmd1); 
    else
    return(mmd0); 
    }int* __fastcall MonthTtlDayTable(int vy) 
    {
    static int mtd0[13]={0,31,59,90,120,151,181,212,243,273,304,334,365}; 
    static int mtd1[13]={0,31,60,91,121,152,182,213,244,274,305,335,366}; 
    // 
    if(IsLeapYear(vy)) 
    return(mtd1); 
    else 
    return(mtd0); 

    #endif
      

  3.   

    ts.GetTotalSeconds() == 86400L ts.GetTotalSeconds()返回的不是秒数??那个L是什么???我想得到两个时间之间的秒数去计算一个速度