想通过 CTimeSpan 类来得到两个时间的差CTime time1;
.....
CTime time2;
....CTimeSpan span = time1 - time2;int len=span.GetMinutes(); //相减的秒数
怎么会报错?
error C2228: “.GetMinutes”的左侧必须有类/结构/联合类型
        类型是“'unknown-type'”
急在线等!

解决方案 »

  1.   

    不应该啊,不过如果你要计算总秒数
    要用CTimeSpan::GetTotalMinutes 
    GetMinutes的范围是-59~59
      

  2.   

    相减的秒数貌似是:LONG GetTotalSeconds( ) const;
      

  3.   

    不好意思GetTotalMinutes 是总分钟
    GetTotalSeconds 才是总秒数
      

  4.   

    我用的是2003,编译出错的一句是int len=span.GetMinutes(); 
    注释掉就可以 
    奇怪!!!!
      

  5.   

    已经定义了CTimeSpan的变量
    你这个怎么用的?
      

  6.   

    CTime time1;
    .....
    CTime time2;
    ....CTimeSpan span = time1 - time2;int len=span.GetTotalSeconds();
      

  7.   

    你那个程序是可以编译通过的,你把项目中的临时文件(ncb、aps、clw、opt)等删掉重新生成试试 
      

  8.   

    上面的用法是没有问题的
    你的变量名好像编译器不识别啊,你换一个变量名,或者重新输一遍试试
    把这段
    long len=span.GetTotalSeconds();
    重新敲一遍试试
    还不行你就另见一个工程单独试试吧
      

  9.   

    呵呵,费这劲干啥呀,用这个函数:GetTickCount();相当简单,好用。
      

  10.   

    有一个CTime 是需要自己赋值的CTime tm;
    CString strTime;
    int nYear;
    int nMonth;
    int nDay;
    int nHour;
    int nMinute;
    int nSecond;
    int IntOverTime; tm=CTime::GetCurrentTime();
    strTime="2010/01/02 02:20:20";
    sscanf(strTime, "%d/%d/%d %d:%d:%d", &nYear,&nMonth,&nDay,&nHour,&nMinute,&nSecond); 
    CTime result(nYear,nMonth,nDay,nHour,nMinute,nSecond);
    CTimeSpan timeSpan = tm - result;
    IntOverTime=timeSpan.GetTotalMinutes();
      

  11.   


    if(nIDEvent == 1)
    {
    if(m_bServiceRunning)
    {
    m_nMinite++;
    if (m_nMinite==15)
    {
    //统计数据、并写入数据库
    int IntAllVeh=0;
    int IntZhong=0;
    int IntYYVeh=0;
    int IntOnlineVeh=0;
    int IntTaxiVeh=0;
    int i,j;
    int nYear;
    int nMonth;
    int nDay;
    int nHour;
    int nMinute;
    int nSecond;
    CString strTime;
    CTime tmpTime;
    CTime tm;
    int IntOverTime=0;
    CString strsql;
    CTimeSpan timeSpan;
    CTimeSpan span; for (i=0;i<=p_Team[0].iAll;i++)
    {
    for (j=0;j<p_veh[0].iAll;j++)
    {
    tm=CTime::GetCurrentTime();
    strTime=p_veh[j].StrDate +" " + p_veh[j].StrTime;
    sscanf(strTime, "%d/%d/%d %d:%d:%d", &nYear,&nMonth,&nDay,&nHour,&nMinute,&nSecond); // 得到年
    // 构造CTime变量
    CTime result(nYear,nMonth,nDay,nHour,nMinute,nSecond);
    timeSpan = tm - result;
    IntOverTime=timeSpan.GetTotalMinutes(); //相减的分数
    IntAllVeh++;
    if ( IntOverTime<m_nMinite && p_veh[j].BlnLocate)
    {
    IntOnlineVeh++;
    if (p_veh->IntTaxiStatus!=0)
    {
    IntYYVeh++;
    }
    if (p_veh->IntTaxiStatus==16)
    {
    IntZhong++;
    }
    }
    strTime=p_veh[j].StrBusinessTime;
    sscanf(strTime, "%d/%d/%d %d:%d:%d", &nYear,&nMonth,&nDay,&nHour,&nMinute,&nSecond); // 得到年 // 构造CTime变量
    CTime yyTime(nYear,nMonth,nDay,nHour,nMinute,nSecond);
    span = tm-yyTime;
    IntOverTime=span.GetTotalMinutes(); //相减的分数
    if ( IntOverTime<60 && p_veh[j].BlnLocate)
    {
    IntYYVeh++;
    }
    }
    }
    m_nMinite=0;
    }
    }
    }
    CDialog::OnTimer(nIDEvent);