You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 07:49:09