当前位置: 首页 > Web前端 > JavaScript

JS判断给定时间在一定时间范围内

时间:2023-03-27 17:12:25 JavaScript

有这样一种场景:给定一个时间,需要判断这个时间属于哪个时间范围。比如时间范围如下:[["00:00","01:00"],["01:00","02:00"],["02:00","03:00"],["03:00","04:00"],["04:00","05:00"],["05:00","06:00"],["06:00","07:00"],["07:00","08:00"],["08:00","09:00"],["09:00","10:00"],["10:00","11:00"],["11:00","12:00"],["12:00","13:00"],["13:00","14:00"],["14:00","15:00"],["15:00""16:00"],["16:00","17:00"],["17:00","18:00"],["18:00","19:00"],["19:00","20:00"],["20:00","21:00"],["21:00","22:00"],["22:00","23:00"],["23:00","24:00"]]现在给出一个时间为15:28,那么需要返回时间范围["15:00","16:00"],具体实现代码如下:functionjudge(time){//生成一个24小时制时间间隔为1小时lettimeArrays=newArray(24).fill(['','']).map((item,index)=>[(index<10?'0'+index:index)+':00',((index+1)<10?'0'+(index+1):(index+1))+':00']);返回时间数组。filter(item=>compare(time,item[0])&&compare(item[1],time));}functioncompare(startTime,endTime){//将时间转换为分钟,然后比较letstartTimes=startTime.split(':');让endTimes=endTime.split(':');让startTimeVal=startTimes[0]*60+Number(startTimes[1]);让endTimeVal=endTimes[0]*60+Number(endTimes[1]);返回开始时间值>=结束时间值;}test一下,输入时间为15:28console.log(judge('15:28'));执行后返回的结果如下:[["15:00","16:00"]]如果传入临界点的时间,比如16:00,那么结果是什么?console.log(judge('16:00'));执行后返回结果如下:[["15:00","16:00"],["16:00","17:00"]]在实际应用场景中,对于临界点时间,如何划分它位于哪个区域通常有以下几种情况:(1)同时在两个时间间隔内,比如16:00,算作位于["15:00","16:00"],也算作位于在["16:00","17:00"]间隔;(2)临界时间作为结束时间,如16:00,则只算在["15:00","16:00"]区间内;(3)临界时间作为起始时间,如16:00,则只算在区间["16:00","17:00"]内;如果要同时兼容以上几种情况,需要比较判断方法,通过相应的参数进行修改和控制。具体修改代码如下:functionjudge(time,leftEquals,rightEquals){//生成一个24小时的时间间隔,跨度为1小时lettimeArrays=newArray(24).fill(['','']).map((item,index)=>[(index<10?'0'+index:index)+':00',((index+1)<10?'0'+(index+1):(index+1))+':00']);返回时间数组。filter(item=>compare(time,item[0],leftEquals)&&compare(item[1],time,rightEquals));}functioncompare(startTime,endTime,equals){//将时间转换为分钟,然后比较letstartTimes=startTime.split(':');让endTimes=endTime.split(':');让startTimeVal=startTimes[0]*60+Number(startTimes[1]);让endTimeVal=endTimes[0]*60+Number(endTimes[1]);返回等于?开始时间值>=结束时间值:秒tartTimeVal>endTimeVal;}我们来测试一下上面三种场景:场景一:console.log(judge('16:00',true,true));输出结果如下:[["15:00","16:00"],["16:00","17:00"]]场景二:console.log(judge('16:00',false,true))输出如下:[["15:00","16:00"]]场景三:console.log(judge('16:00',true,false))输出如下:[["16:00","17:00"]]