繁体   English   中英

比较两次范围 JavaScript

[英]Compare two times range JavaScript

我想比较两次并将结果显示为 boolean。 我为此创建了一个 function。 这是工作。 但是当比较“AM”和“PM”时,output 是错误的。

let Time = "11:25 PM";
let currentTime = "10:00 AM";

console.log(isFutureTime(currentTime, Time));
//Output should be true or false

  function isFutureTime(currentTime, checkTime) {
    if (checkTime.split(" ")[1] == currentTime.split(" ")[1]) {
      if (parseInt(currentTime.split(":")[0]) < parseInt(checkTime.split(":")[0])) {
        return true;
      }
      else if (parseInt(currentTime.split(":")[0]) == parseInt(checkTime.split(":")[0])) {
        if (parseInt(currentTime.split(":")[1].substring(0, 2)) <= parseInt(checkTime.split(":")[1])) {
          return true;
        } else {
          return false;
        }
      } else {
        return false;
      }
    }
    else {
      return false;
    }
  }

您需要检查currentTime是 AM 还是 PM,如果是 PM,则返回true

...
return currentTime.split(" ")[1] === 'PM';
...

由于您已经检查了两次是否相等,因此您无需检查checkTime

您为currentTime.split(" ")[1]声明一个变量以提高效率。

 let Time = "11:25 PM"; let currentTime = "10:00 AM"; console.log(isFutureTime(currentTime, Time)); //Output should be true or false function isFutureTime(currentTime, checkTime) { if (checkTime.split(" ")[1] == currentTime.split(" ")[1]) { if (parseInt(currentTime.split(":")[0]) < parseInt(checkTime.split(":")[0])) { return true; } else if (parseInt(currentTime.split(":")[0]) == parseInt(checkTime.split(":")[0])) { if (parseInt(currentTime.split(":")[1].substring(0, 2)) <= parseInt(checkTime.split(":")[1])) { return true; } else { return false; } } else { return false; } } else { return currentTime.split(" ")[1] === 'PM'; } }

或者,Javascript Date可以本地解析您正在使用的时间格式。 所以,我只需要连接一个日期字符串并为这两个值构造一个Date实例。 然后比较它们。

 function isFutureTime(currentTime, checkTime) { let date = new Date() date = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}` return new Date(`${date} ${currentTime}`) > new Date(`${date} ${checkTime}`) } const currentTime = '10:00 AM'; const futureTime = '11:25 PM'; const pastTime = '03:15 AM'; console.log(futureTime, '=', isFutureTime(currentTime, futureTime)) console.log(pastTime, '=', isFutureTime(currentTime, pastTime))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM