JavaScript中如何判断含时分的时间是否在指定时间区间内
嘿,我来帮你搞定这个精确到分钟的时间区间判断问题!先给你指出原代码里的一个小错误:var minutesofday = date.getMinutes();这里的date应该是thedate,不然会因为变量未定义报错哦。
接下来,咱们把分钟纳入判断逻辑,有两种直观的方法:
方法一:把时间转换成当天总分钟数比较
这个方法逻辑最清晰,不管你后续要调整起始/结束时间的分钟数,改起来都超方便。核心思路是把所有时间都转换成「从0点开始的总分钟数」,然后直接比较数值大小:
var thedate = new Date(); var dayofweek = thedate.getUTCDay(); var hourofday = thedate.getUTCHours(); var minutesofday = thedate.getMinutes(); // 修正了原代码的变量错误 function inTime() { // 先排除周末(周日是0,周六是7) if (dayofweek === 0 || dayofweek === 7) { return false; } // 计算当前时间的总分钟数 const currentTotal = hourofday * 60 + minutesofday; // 起始时间13:00的总分钟数 const startTotal = 13 * 60; // 结束时间20:00的总分钟数 const endTotal = 20 * 60; // 判断是否在13:00之后、20:00之前(不包含整点) return currentTotal > startTotal && currentTotal < endTotal; }
如果需要包含13:00或者20:00,只需要把>改成>=,<改成<=就行。比如要允许13:00整进入区间,就写成currentTotal >= startTotal。
方法二:直接分情况判断小时和分钟
如果你想更直观地控制时分的边界,可以分小时区间来判断,比如:
var thedate = new Date(); var dayofweek = thedate.getUTCDay(); var hourofday = thedate.getUTCHours(); var minutesofday = thedate.getMinutes(); function inTime() { // 先排除周末 if (dayofweek === 0 || dayofweek === 7) { return false; } // 分情况处理: if (hourofday > 13 && hourofday < 20) { // 小时在14-19之间,不管分钟多少都满足 return true; } else if (hourofday === 13) { // 小时是13,需要分钟大于0(也就是13:00之后) return minutesofday > 0; } else if (hourofday === 20) { // 小时是20,不管分钟多少都不满足(因为结束时间是20:00) return false; } // 其他小时直接返回false return false; }
比如如果你的结束时间是19:30,那可以把判断逻辑调整成:
else if (hourofday === 19) { return minutesofday < 30; }
这样就能精确控制到19:30了。
内容的提问来源于stack exchange,提问作者Alligator
相关产品推荐
相关产品推荐

