日期:2014-05-18  浏览次数:20895 次

判断时间间隔
有个方法,需要从设定的时间起,每隔X小时执行一次
我是判断系统当前时间 大于 设定的时间 起 与 相隔小时 取模,如果为零时执行 
C# code

if(Convert.ToDateTime(HourMinute) >= Convert.ToDateTime(myHourMinute) && (Convert.ToDateTime(HourMinute) - Convert.ToDateTime(myHourMinute)) % X小时 == 0)
{
 执行方法。。
}
//HourMinute 系统当前小时分钟
//myHourMinute 设定开始执行的小时分钟



现在是 怎样让 (Convert.ToDateTime(HourMinute) - Convert.ToDateTime(myHourMinute)) 为整数 与 X小时取模

------解决方案--------------------
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)
{
//执行。。
}
------解决方案--------------------
1楼正解,要用Timer。。。
否则你这个方法什么时候执行???
算多少小时:
C# code
TimeSpan ts=DateTime.Now-startTime;
int hour=(int)ts.TotalHours;

------解决方案--------------------
只取小时是会有很大的误差的。。如果时间不需要多精确的话,那至少也是取分钟。。需要更精确的就是秒。。
即:TimeSpan ts=DateTime.Now-startTime;
if((int)ts.TotalMinutes==120)
{
startTime=startTime.AddHours(2);
……
……
}
------解决方案--------------------
Convert.ToDateTime(HourMinute).Hour -Convert.ToDateTime(myHourMinute).Hour 这个出来的一定是整数
取模就更简单了
if(Convert.ToDateTime(HourMinute).Hour -Convert.ToDateTime(myHourMinute).Hour % 2 == 0)
{
//你的业务
}

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