jQuery Time Picker设置最大时间为12:00 am无效,如何解决?
我之前也踩过jQuery Timepicker这个时间设置的小坑!咱们先把问题的根源理清楚,再给你解决办法:
首先得纠正一个常见的时间认知误区:在12小时制里,12:00am是午夜(当天的结束/次日的开始,对应24小时制的00:00),而当天晚上的11:59pm是在12:00am之前的——时间顺序是10am → 12pm(中午)→ 11:59pm → 12:00am(次日)。所以你设置minTime: '10'(上午10点)和maxTime: '12:00am'时,插件会把这个范围理解为「从当天上午10点到次日午夜」,那当天晚上11:59pm自然在允许范围内。
那根据你的实际需求,分两种情况解决:
情况1:你想限制最大时间为当天中午12点(不允许选下午/晚上的时间)
这应该是大多数人混淆am/pm时的真实需求,把maxTime改成'12:00pm'即可,完整代码如下:
$('#time1').timepicker({ timeFormat: 'h:mm p', interval: 15, minTime: '10', maxTime: '12:00pm', // 改成中午12点 defaultTime: '10', startTime: '10:00', dynamic: false, dropdown: true, scrollbar: true });
情况2:你确实需要最大时间为午夜12:00am(仅允许选到次日凌晨)
如果你是想让时间范围覆盖当天10点到次日午夜,同时不想让用户选到当天晚上的时间(逻辑上有点矛盾,但假设是这个需求),可以改用24小时制的格式来明确边界,比如设置maxTime: '00:00',同时配合showDuration: false来避免跨天的显示问题:
$('#time1').timepicker({ timeFormat: 'h:mm p', interval: 15, minTime: '10', maxTime: '00:00', // 用24小时制明确午夜时间 defaultTime: '10', startTime: '10:00', dynamic: false, dropdown: true, scrollbar: true, showDuration: false // 关闭时长显示,避免跨天混淆 });
另外补充个小技巧:如果要严格限制时间在当天内(不跨到次日),可以把maxTime设为'11:59pm'(或24小时制的'23:59'),这样就能覆盖当天10点到深夜的所有时间,同时不会允许次日的时间。
内容的提问来源于stack exchange,提问作者user9191441
相关产品推荐
相关产品推荐

