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

时间:2015-03-20 22:56:18

标签: javascript 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中执行此操作的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

使用与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中工作(假设您为变量添加$符号)。

答案 1 :(得分:1)

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

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

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

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

答案 2 :(得分:0)

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

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