如何以 24 小时格式比较 2 次以检查 1 时间是否在另一时间之前

how to compare 2 times in 24 hour format to check if 1 time is before another time

我有 24 小时格式的时间字符串,例如 20:50 和 23:00

现在我想在 javascript 中创建一个方法来确定 1 次是否早于另一次。我在 php 中这样做过:

function isLater($time1, $time2) {
$time1 = new DateTime($time1);
$time2 = new DateTime($time2);

if ($time1 > $time2) {
return true;
}
return false;
}

function isEarlier($time1, $time2) {
    $time1 = new DateTime($time1);
    $time2 = new DateTime($time2);

    if ($time1 < $time2) {
    return true;
    }
    return false;
}

我的问题是,在 javascript 中执行此操作的最佳方法是什么?

使用与 PHP 中相同的结构,您可以这样做:

function isLater(time1, time2) {
  if (time1 > time2) {
    return true;
  }
  return false;
}

function isEarlier(time1, time2) {
  if (time1 < time2) {
    return true;
  }
  return false;
}

因为 JavaScript 会认为 "a" 小于 "b" 并且“2”小于“3”,所以不需要转换为日期时间。

如果你想让代码更短,你可以像这样制作函数:

function isLater(time1, time2) {
  return time1 > time2;
}

function isEarlier(time1, time2) {
  return time1 < time2;
}

这个较短的版本甚至可以在 PHP 中使用(假设您为变量添加 $ 符号)。

JavaScript 无法像您提供的那样将任意小时格式解析为日期。如果您知道 24 小时格式始终采用 XX:XX 形式,您可以简单地比较字符串:

'20:50' > '23:00' === false

转换为通用值并进行比较。转换为 Date 对象实际上是转换为以毫秒为单位的时间值,但在这种情况下,转换为分钟更简单,因为您没有日期部分。这当然假设两个日期都在同一天:

function toMinutes(time) {
  var b = time.split(':');
  return b[0]*60 + +b[1];
}

现在比较转换为分钟的两个值:

if (toMinutes(timeA) < toMinutes(timeB)) {
  // timeA is before timeB
}