JavaScript中24小时制当前时间与指定字符串时间比较失败问题
时间比较始终返回false的问题解决方法
你的代码里有个容易忽略的小问题:生成time3时,hour参数里多写了两个空格——'2-digit ',这会导致生成的时间字符串格式出错,比如变成"09 :30"这种带多余空格的格式。而time1和time2是标准的HH:mm格式(比如"08:00"),两种格式的字符串直接比较自然永远不匹配,所以条件判断始终返回false。
修正步骤:
- 把
hour: '2-digit '改成hour: '2-digit',去掉多余空格,确保time3是标准的HH:mm格式。 - (可选)简化
addHours函数,避免不必要的重复代码。
修正后的完整代码:
const time1 = '08:00'; const time2 = '17:00'; const time3 = new Date().toLocaleTimeString([], { hour: '2-digit', minute: "2-digit", hour12: false }); if (time1 < time3 && time3 < time2) { // 简化后的时间添加函数 const addHours = (date, hours) => { const newDate = new Date(date); newDate.setHours(newDate.getHours() + hours); return newDate; }; const now = new Date(); const newDate = addHours(now, 1); console.log(newDate); alert(`Yours Scheduled time is ${newDate}`); } else { alert('You cannnot get appointment now '); }
补充说明:
标准的HH:mm格式字符串可以直接用大于/小于号比较,因为它们的字典序和时间先后顺序完全一致。只要保证三个时间字符串格式统一,就能正确判断当前时间是否在08:00-17:00区间内。
内容的提问来源于stack exchange,提问作者Lalit Joshi
相关产品推荐
相关产品推荐

