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

如何在jQuery/JS中结合小时与分钟判断店铺营业状态?

解决jQuery实时判断店铺营业状态(含分钟精确判断)

嘿,我懂你的困扰——直接把小时和分钟拼成小数的方式根本行不通!比如你写的11.30,JS会把它当成11.3小时,也就是11小时18分钟(0.3×60),完全不是你要的11点30分,这就是代码无效的核心原因。

下面给你两种靠谱的实现思路,结合你的需求来调整:

方案1:转换为总分钟数比较(最直观不易错)

把所有时间都转换成“当天的总分钟数”,这样直接用数字比较就非常准确了。比如7:30就是7×60+30=450分钟,18:00就是18×60=1080分钟。

结合你的代码片段,完整实现如下:

$(function() {
  // 定义检查营业状态的函数
  function updateBusinessStatus() {
    var now = new Date();
    var currentHours = now.getHours();
    var currentMinutes = now.getMinutes();
    
    // 计算当前时间的总分钟数
    var currentTotal = currentHours * 60 + currentMinutes;
    // 设定营业时间的总分钟数:7:30 到 18:00
    var openTotal = 7 * 60 + 30;
    var closeTotal = 18 * 60;

    // 判断状态并切换div显示
    if (currentTotal >= openTotal && currentTotal < closeTotal) {
      $('.shop-open').show();
      $('.shop-closed').hide();
    } else {
      $('.shop-closed').show();
      $('.shop-open').hide();
    }
  }

  // 页面加载时立即执行一次
  updateBusinessStatus();
  // 每分钟更新一次,保证实时性
  setInterval(updateBusinessStatus, 60000);
});

方案2:直接判断小时+分钟的组合条件

如果你不想转换总分钟数,也可以通过多条件组合来精确判断:

$(function() {
  function updateBusinessStatus() {
    var now = new Date();
    var currentHours = now.getHours();
    var currentMinutes = now.getMinutes();

    // 营业条件:
    // 要么小时在8-17之间(完全处于营业时间),
    // 要么小时是7且分钟≥30(刚到营业时间),
    // 注意:如果18:00算打烊,就不要包含18点的情况
    var isOpen = (currentHours > 7 && currentHours < 18) || 
                 (currentHours === 7 && currentMinutes >= 30);

    if (isOpen) {
      $('.shop-open').show();
      $('.shop-closed').hide();
    } else {
      $('.shop-closed').show();
      $('.shop-open').hide();
    }
  }

  updateBusinessStatus();
  setInterval(updateBusinessStatus, 60000);
});

为什么你的原写法失效?

你之前尝试的hour + minutes <= 11.30逻辑完全错误:

  • 这里的minutes是0-59的数字,比如30,所以hour + minutes会变成11+30=41,和11.30比较的话,41远大于11.30,逻辑完全不符合预期。
  • 正确的时间比较必须把小时和分钟统一成相同的单位(要么总分钟,要么分别判断小时和分钟的组合)。

内容的提问来源于stack exchange,提问作者Tobias Heide

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:58:14