// 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
千万别告诉重装之类的,那些就不用回答了!
span:0 1 60 0 1 0
你这个测得是第二组值得结果吧
CTime tbank1(1999,3,19,22,15,0);
CTime tbank2(1999,3,19,22,16,0);你这个就是正确的,真是发愁这个win7啊
所以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
注意: %i64d(i一定要大写)
%ld(l是L)
别写错了就行。
确实如此,好久不写代码了,很多细节都忘了,看来3天不练大家知道啊!不过happyparrot用我的代码在vc6+xp下测试确是没问题的,这个也给大家一个警醒
win7 64位要考虑更多问题
结贴了感谢各位