当前的时间是A时B分
读取的配置文件时间是C时D分如何判断,两个时间差大于5分钟?------------------------------
我用了六个判断才算完成此功能,觉得很烦琐应该有更优的方法吧?欢迎讨论
如果没有,权当散分.....

解决方案 »

  1.   

    你没有年月日,怎么判断?
    如果有年月日,可以用COleDateTime来处理
      

  2.   

    如果是同一天,可以用COleDateTimeSpan进行比较
      

  3.   

    if(A == C)
    {
        if(abs(D - B) >= 5){//out}}
    else
    {
        if(((A - C)*60 + B -D) >= 5){//out}
    }
      

  4.   

    这是定时关机程序(人工开机,然后不管,每天都定时关机),所以不需要判断哪一天COleDateTimeSpan这个函数应该不行,和CTimeSpan差不多吧?
    他是两个时间的差,并不能单纯只判断,小时和分钟的差,他的判断还包含更多的年月日等
      

  5.   

    哦,那这样就行了。
    if(abs(A*60+B-C*60-D) > 5)
    {
        CloseComputer();
    }
      

  6.   

    如果要求当前时间大于配置文件的时间5分钟以上
    if(A*60+B-C*60-D) > 5)
    {
        CloseComputer();
    }
      

  7.   

    CTime tm1(1999,1,1,a,b,0);//使用的时间是A时B分来初始化变量 
    CTime tm2(1999,1,1,c,d,0);//时间是C时D分 来初始化变量
    CTimeSpan span = tm1 - tm2;
    LONG min = span.GetMinutes();
      

  8.   

    CTime tm1(1999,1,1,a,b,0);//使用的时间是A时B分来初始化变量 CTime tm2(1999,1,1,c,d,0);//时间是C时D分 来初始化变量 CTimeSpan span = tm1 - tm2; LONG min = span.GetMinutes();
    LONG min = span.GetMinutes();
    int sec = span.GetSecond();
    if((60*min+sec)>300)
    {}
    else
    {}
      

  9.   

    COleDateTime   t1(   2006,   7,   8,   13,   25,   36   );   
    COleDateTime   t2(   2006,   7,   8,   12   ,20,   4   );   
    COleDateTimeSpan   ts   =   t1   -   t2;   if(ts.GetTotalMinutes()>5)
       MessageBox("大于5分钟");
      

  10.   

    就拿刚才的一个例子来说一下吧当前是23:58 
    配置是0:2 
    相差4分钟带入公式(A*60+B-C*60-D)
    =(23*60+58-0*60-2)
    =23*60+56这个数无论如何也比24*60小呀所以判断时间的公式是5<(A*60+B-C*60-D)<23*60+55
      

  11.   

    全部装换为秒,比一下就OK了。
    SYSTEMTIME st1, st2;   //两个要比较的时间
    DWORD    ts1 = 0;
    DWORD    ts2 = 0;     //转换为秒
    tm ts;
    ts.tm_year = st1.wYear-1900;
    ts.tm_mon = st1.wMonth-1;
    ts.tm_mday = st1.wDay;
    ts.tm_hour = st1.wHour;
    ts.tm_min = st1.wMinute;
    ts.tm_sec = st1.wSecond;
    ts1 = mktime(&ts);ts.tm_year = st2.wYear-1900;
    ts.tm_mon = st2.wMonth-1;
    ts.tm_mday = st2.wDay;
    ts.tm_hour = st2.wHour;
    ts.tm_min = st2.wMinute;
    ts.tm_sec = st2.wSecond;
    ts2 = mktime(&ts);if (abs(ts1 - ts2) > 5*60)
    {//秒数大于5*60
    TRACE("***************\n");
    }
    else
    {
    }