如何检查input时间是在开始时间和结束时间之间

我想要构build一个API,其中,当前时间将被采用(即下午7:30),并将与开始时间(即上午6:00)和结束时间(即下午8:00)进行比较。 如果时间落在这两个限制之间,则会在结果中给出肯定的答复。

有什么datefunction,我可以做到这一点。 如果不是什么有效的方法来检查小时和分钟比较这些限制?

您可以将string时间表示转换为数字并进行比较; 尝试这个;

 function timeToNumber(timeString) { var t = timeString.split(" "); var offset = 0; if (t[1] == "PM") { offset = 12; } var hm = t[0].split(":"); var hours = Number(hm[0]) + offset; return hours * 100 + Number(hm[1]); } function timeCompare(min, max, ref) { return (timeToNumber(min) <= timeToNumber(ref)) && (timeToNumber(ref) <= timeToNumber(max)); } var rangeMin = "6:00 AM"; var rangeMax = "8:00 PM"; var reference = "7:30 PM" console.log(timeCompare(rangeMin, rangeMax, reference)) 

有一个模块时刻的date和时间操作。 如果你想find两次之间的差异,在这里你去!

 var moment = require('moment'); var startTime = moment(new Date()); var endTime = moment(new Date()); var timeDiff = endTime.diff(startTime,"ms"); //in mili-seconds var timeDiff = endTime.diff(startTime,"s"); //in seconds var timeDiff = endTime.diff(startTime,"h"); //in hour 

还有更多的用途可以在文档中find。

有很多方法可以尝试。 一个是通过提供开始和结束时间来使用date,例如

 /* Return true if date is between startTime and endTime, otherwise false. ** @param {string} startTime - in format HH:mm ** @param {string} endTime - in format HH:mm ** @param {Date} date - date to compare, default is now ** @returns {boolean} */ function inTime(startTime, endTime, date) { function toMins(v) { v = v.split(':'); return v[0]*60 + +v[1]; } var now = new Date(); startTime = new Date(+now).setHours(0, toMins(startTime), 0, 0); endTime = new Date(+now).setHours(0, toMins(endTime), 0, 0); return now >= startTime && now <= endTime; } console.log('Is it between 6am and 8pm? ' + inTime('6:00','20:00')); 
 var today = new Date().getHours(); if (today >= 6 && today <= 20) { alert('good time'); } else { alert('bad time') }