判断时间点是否在时间段有两种方法:
一种是计算出当前时间的秒数来判断,即从00:00:00为起始值,所经历的秒数。
如 08:10:10,那么从00:00:00开始所经历的秒数为 8*60*60+10*60+10 = 29410s;
所以判断一个时间点是否在一个时间段内,就可以从所经历的秒数来判断得到。
其中需要注意的是,当起始大于结束时间时,需要做一些处理。如起始时间22:00:00 结束时间06:00:00
另外一种方法:
直接将时间的小时,分钟,秒钟合并成一个数字来判断。
然后通过判断这个数字来获取当前时间是否在范围内。
较为简单却运算量最小的方法是移位:时间值 = ( 小时<<16 | 分钟<<8 | 秒钟), 这种方式。
通过比较当前的时间值和起始以及结束时间值来判断是否在时间段内;
bool IsInTimeZone(DateTime Now,DateTime sta, DateTime sto)
{
u32 sta_count =0;
u32 sto_count =0;
u32 now_count =0;
sta_count = sta.hour<<16 | sta.minute<<8 |sta.second;
sto_count = sto.hour<<16 | sto.minute<<8 |sto.second;
now_count = Now.hour<<16 | Now.minute<<8 |Now.second;
if(sto_count > sta_count)
{
if(now_count>= sta_count && now_count<=sto_count)
return true;
else
return false;
}
else
{
if(now_count <= sta_count && now_count >= sto_count)
return true;
else
return false;
}
}