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

如何按起止时分控制按钮启用/禁用?分钟判断逻辑出错求助

解决按钮按时间段启用/禁用的问题

你的核心问题是把小时和分钟拆分开判断,导致逻辑嵌套复杂,很容易在边界条件(比如跨小时的时间段、起止小时相同的情况)出错。最简单的方法是把所有时间转换成当天的总分钟数,直接比较数值大小,逻辑会清晰很多。

改进后的代码实现

先计算三个关键值:

  • 当前时间的总分钟数:currentTotalMinutes = DateTime.Now.Hour * 60 + DateTime.Now.Minute
  • 开始时间的总分钟数:startTotalMinutes = Model.FromTimeHour * 60 + Model.FromTimeMinutes
  • 结束时间的总分钟数:endTotalMinutes = Model.ToTimeHour * 60 + Model.ToTimeMinutes

然后直接判断当前分钟数是否在[开始, 结束]区间内,再渲染对应的按钮:

@{
    var currentTime = DateTime.Now;
    int currentTotalMinutes = currentTime.Hour * 60 + currentTime.Minute;
    int startTotalMinutes = Model.FromTimeHour * 60 + Model.FromTimeMinutes;
    int endTotalMinutes = Model.ToTimeHour * 60 + Model.ToTimeMinutes;
    
    bool isButtonEnabled = currentTotalMinutes >= startTotalMinutes && currentTotalMinutes <= endTotalMinutes;
}

@if (isButtonEnabled)
{
    <input type="button" id="btn_save" style="width:auto" name="submit" value="Submit Discount" class="btn btn-info" onclick="SubmitForm()" />
    <input type="submit" id="btn_save1" name="submit" value="Submit Discount" style="display:none" />
}
else
{
    <input type="submit" class="btn btn-info" name="submit" value="Submit Discount" disabled style="width:180px;" onchange="preventMultipleSave()" />
}

为什么这个方法更好

  • 避免了嵌套的if-else逻辑,减少出错概率
  • 统一用分钟数比较,不管时间段是在同一小时还是跨小时,逻辑都一样
  • 代码更简洁易读,后期维护也方便

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 23:25:37