如何按起止时分控制按钮启用/禁用?分钟判断逻辑出错求助
解决按钮按时间段启用/禁用的问题
你的核心问题是把小时和分钟拆分开判断,导致逻辑嵌套复杂,很容易在边界条件(比如跨小时的时间段、起止小时相同的情况)出错。最简单的方法是把所有时间转换成当天的总分钟数,直接比较数值大小,逻辑会清晰很多。
改进后的代码实现
先计算三个关键值:
- 当前时间的总分钟数:
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
相关产品推荐
相关产品推荐

