当前位置:C++技术网 > 资讯 > 时间算法:时间间隔和倒计时实现

时间算法:时间间隔和倒计时实现

更新时间:2015-06-25 18:02:16浏览次数:1+次

    注意细节:
    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;
}