注意细节:
1.把计时器的频率调成500毫秒一次,保持与始终频率一致,否则,一秒一次的话,每次在30秒时分钟就进位了。
2.时间结构体是DWORD类型,是无符号型的。
比较时间大小:
1.如果小时大于,则大;
2.如果小时等于,继续比较;
3.如果分钟大于,则大;
4.如果分钟等于,继续比较;
5.如果秒钟大于,则大;
6.如果秒钟等于,则相等。
计算时间间隔:
1.如果秒钟大于等于,得出秒钟;如果秒钟小于,则秒钟向分钟借1,秒钟相减后加60,得出秒钟;
2.如果分钟减1后,再减掉比较的分钟,如果小于0,则向小时借1,分钟加60,得出分钟。
3.如果小时减1后,再减掉比较的小时,如果小于0,则小时加24,得出小时。
//获取时间间隔
SYSTEMTIME GetTimeSpan(SYSTEMTIME time_first,SYSTEMTIME time_second)
{
SYSTEMTIME time_span;
int span_h,span_m,span_s,first_h,first_m,first_s;
first_h = (int)time_first.wHour;
first_m = (int)time_first.wMinute;
first_s = (int)time_first.wSecond;
span_s = first_s - time_second.wSecond;
if (span_s<0)
{
first_m--;
span_s += 60;
}
time_span.wSecond = span_s;
span_m = first_m - time_second.wMinute;
if (span_m<0)
{
first_h--;
span_m += 60;
}
time_span.wMinute = span_m;
span_h = first_h - time_second.wHour;
if (span_h<0)
span_h +=24;
time_span.wHour = span_h;
return time_span;
}
//倒计时
int CountDown(int &h,int &m,int &s)
{
int allsec = h*3600 + m*60 + s;
if (allsec==0)return 0;
allsec--;
h = allsec/3600;
m = (allsec%3600)/60;
s = (allsec%3600)%60;
return allsec;
}