有个方法,需要从设定的时间起,每隔X小时执行一次
我是判断系统当前时间 大于 设定的时间 起 与 相隔小时 取模,如果为零时执行 if(Convert.ToDateTime(HourMinute) >= Convert.ToDateTime(myHourMinute) && (Convert.ToDateTime(HourMinute) - Convert.ToDateTime(myHourMinute)) % X小时 == 0)
{
 执行方法。。
}
//HourMinute 系统当前小时分钟
//myHourMinute 设定开始执行的小时分钟
现在是 怎样让 (Convert.ToDateTime(HourMinute) - Convert.ToDateTime(myHourMinute)) 为整数 与 X小时取模

解决方案 »

  1.   

    你直接用Timer 定时器就行了,不需要这么麻烦。
      

  2.   

    DateTime d1=DateTime.Parse("2006-06-07 09:00:00");
    DateTime d2=DateTime.Parse("2006-06-11 12:00:00");System.TimeSpan ND=d2-d1;
    int hn=ND.Hours;   //小时差然后再将之个小时差进行%你多少小时执行一次。如:if (hn%4==0)
    {
       //执行。。
    }
      

  3.   

    1楼正解,要用Timer
    否则你这个方法什么时候执行???
    算多少小时:
    TimeSpan ts=DateTime.Now-startTime;
    int hour=(int)ts.TotalHours;
      

  4.   

    我已经用过一个Timer控件了。
    起始时间不是整小时,而是XX小时YY分钟(如16:30)
    从起始时间起每隔2小时执行一次
      

  5.   

    只取小时是会有很大的误差的。。如果时间不需要多精确的话,那至少也是取分钟。。需要更精确的就是秒。。
    即:TimeSpan ts=DateTime.Now-startTime;
    if((int)ts.TotalMinutes==120)
    {
    startTime=startTime.AddHours(2);
    ……
    ……
    }
      

  6.   

    用两个 timer ,有啥问题?
      

  7.   

    Convert.ToDateTime(HourMinute).Hour -Convert.ToDateTime(myHourMinute).Hour 这个出来的一定是整数
    取模就更简单了
    if(Convert.ToDateTime(HourMinute).Hour -Convert.ToDateTime(myHourMinute).Hour % 2 == 0)
    {
        //你的业务
    }
      

  8.   

    这样解决 大家再看看  //设定间隔小时数相等时
    else if( Convert.ToDateTime(HourMinute) >= Convert.ToDateTime(myHourMinute))
           {
            if( Convert.ToDateTime(HourMinute).Minute == Convert.ToDateTime(myHourMinute).Minute)
      {
       if((Convert.ToDateTime(HourMinute).Hour - Convert.ToDateTime(myHourMinute).Hour) % myGapTime == 0)
    {
    GetDataBaseEvent(myid,myExportPath);
    }
      }
    }没意见就结贴了
      

  9.   

    首先,想要准确的得到0的可能性并不大,因此建议使用大于或者等于间隔时间 来判断,
    其次,建议使用C#的DateTime对象来解决这个问题,
         我们先将系统当前时间谁置为一个DateTime对象 然后,将这个时间加上一个间隔时间 得到一个未来的时间 newdate
       然后,我们省下的任务就是使用这个 newdate.compareTo()方法来比较获得,现在的时间是否达到或者已经超过程序需要运行的时间,如果是 那么我们就让程序执行,否则 就不执行