日期比较运算符 - 逻辑问题

时间:2017-04-10 10:26:09

标签: javascript date date-comparison

我有这个简单的js函数:

function checkTime() {  
  var d1 = new Date();
  var d2 = new Date('April 10, 2017 12:11:00');

  if (d1 < d2) {
    $('#modalnew').modal('show');
  } else {
    window.location.replace('https://www.example.php');
  }
}

它工作正常,但我不了解日期比较。这可能是一个愚蠢的&#34;问题,但我无法在谷歌找到答案。 F.E。: - 没有代码,只是一个例子 -

d1 (now) = April 10, 2017 12:22:00
d2 (date set) = April 10, 2017 12:11:00

为什么d1小于d2并激活window.location?按逻辑顺序d1,它比d2大11分钟。它与哪个参数完全比较?

3 个答案:

答案 0 :(得分:2)

在您的情况下d1不小于d2,这是预期的结果,因此执行了window.location.replace

将评估日期与(d1.valueOf()< d2.valueOf())进行比较。从valueOf()开始,milliseconds会在00:00:00 UTC Thursday 1, January 1970内提供时间,然后对其进行比较。

答案 1 :(得分:2)

要比较两个日期,最好使用Date.prototype.getTime()方法,该方法根据通用时间返回与指定日期时间对应的数值。

每个日期d1d2的结果编号将更好地解释短期和更长的日期。

代码:

function checkTime() {  
  var d1 = new Date();
  var d2 = new Date('April 10, 2017 12:11:00');

  d1.getTime() < d2.getTime()
    ? $('#modalnew').modal('show')
    : window.location.replace('https://www.example.php');
}

答案 2 :(得分:-1)

比较JavaScript中的两个日期 使用getTime()转换您的时间,然后比较More DetailDetailWorking Demo