判断时间间隔
有个方法,需要从设定的时间起,每隔X小时执行一次
我是判断系统当前时间 大于 设定的时间 起 与 相隔小时 取模,如果为零时执行
if(Convert.ToDateTime(HourMinute) >= Convert.ToDateTime(myHourMinute) && (Convert.ToDateTime(HourMinute) - Convert.ToDateTime(myHourMinute)) % X小时 == 0){ 执行方法。。}//HourMinute 系统当前小时分钟//myHourMinute 设定开始执行的小时分钟
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()方法来比较获得,现在的时间是否达到或者已经超过程序需要运行的时间,如果是 那么我们就让程序执行,否则 就不执行