// test
CTime tbank1(1999,3,19,22,15,0);
//tbank1 = mddata::StringToCTime("20130725","11:32:22"); TRACE(_T("tbank1:%d-%d-%d  %d-%d-%d \n")
,tbank1.GetYear()
,tbank1.GetMonth()
,tbank1.GetDay()
,tbank1.GetHour(),tbank1.GetMinute(),tbank1.GetSecond()); CTime tbank2(1999,3,19,22,15,30);
//tbank2 = mddata::StringToCTime("20130725","11:32:30"); TRACE(_T("tbank2:%d-%d-%d  %d-%d-%d \n")
,tbank2.GetYear()
,tbank2.GetMonth()
,tbank2.GetDay()
,tbank2.GetHour(),tbank2.GetMinute(),tbank2.GetSecond());
CTimeSpan span;
//if (tbank1 > tbank2)
//{
// span = tbank1 - tbank2;
// time_insert = tbank1;
//}
//else
//{
span = tbank2 - tbank1;
// time_insert = tbank2;
//} TRACE(_T("span:%d  %d  %d  %d  %d  %d")
,span.GetTotalHours()
,span.GetTotalMinutes()
,span.GetTotalSeconds()
,span.GetHours()
,span.GetMinutes()
,span.GetSeconds());
输出结果:
tbank1:1999-3-19  22-15-0 
tbank2:1999-3-19  22-15-30 
span:0  0  0  0  30  0
如果时间改一下:
CTime tbank1(1999,3,19,22,15,0);
CTime tbank2(1999,3,19,22,16,0);
得出的结果如下:
tbank1:1999-3-19  22-15-0 
tbank2:1999-3-19  22-16-0 
span:0  0  1  0  60  0
为什么
span.GetMinutes()得到的是秒数啊,而且其他的几个get都不对啊,怎么回事,有点崩溃了,谁给指点一下
我系统win764位旗舰版,用的vs2005sp1
千万别告诉重装之类的,那些就不用回答了!

解决方案 »

  1.   

    VC6+XP下的结果:
    span:0  1  60  0  1  0
      

  2.   


    你这个测得是第二组值得结果吧
    CTime tbank1(1999,3,19,22,15,0);
    CTime tbank2(1999,3,19,22,16,0);你这个就是正确的,真是发愁这个win7啊
      

  3.   

    你错在最后一个trace,类型不对,前三个函数返回longlong,后三个返回long。
    所以trace函数应改为: TRACE(_T("span:%I64d  %I64d  %I64d  %ld  %ld  %ld"),
    VS2003.net,XP sp3亲测:第一组值:
    tbank1:1999-3-19  22-15-0 
    tbank2:1999-3-19  22-15-30 
    span: 0  0  30  0  0  30第二组值:
    tbank1:1999-3-19  22-15-0 
    tbank2:1999-3-19  22-16-0 
    span: 0  1  60  0  1  0
      

  4.   

    才看到页面这个i和L不分。
    注意:  %i64d(i一定要大写)
            %ld(l是L)
    别写错了就行。
      

  5.   


    确实如此,好久不写代码了,很多细节都忘了,看来3天不练大家知道啊!不过happyparrot用我的代码在vc6+xp下测试确是没问题的,这个也给大家一个警醒
    win7 64位要考虑更多问题
    结贴了感谢各位