24

当我创建两个相同的 JavaScriptDate对象然后比较它们时,它们似乎不相等。如何测试两个 JavaScript 日期是否具有相同的值?

var date1 = new Date('Mon Mar 11 2013 00:00:00');
var date2 = new Date('Mon Mar 11 2013 00:00:00');
console.log(date1 == date2); //false?

JS Fiddle 可在此处获得

4

3 回答 3

50

看来这已经解决了

要检查日期是否相等,必须将它们转换为其原语:

date1.getTime()=== date2.getTime()
//true
于 2013-03-18T05:44:41.813 回答
22

首先,您在这里比较参考文献时犯了一个严重的错误。看看这个:

var x = {a:1};
var y = {a:1};

// Looks like the same example huh!
alert (x == y); // It says false

在这里,虽然对象看起来相同,但它们在内存中拥有不同的插槽。引用只存储对象的地址。因此,两个参考是不同的。

所以现在,我们必须比较这些值,因为您知道参考比较在这里不起作用。你可以做

if (date1 - date2 == 0) {
    // Yep! Dates are equal
} else {
   // Handle different dates
}
于 2013-03-18T06:19:59.480 回答
0

我在 for 循环中比较了多种值,所以我无法通过减法来评估它们,而是在比较之前将值转换为字符串

var a = [string1, date1, number1]
var b = [string2, date2, number2]
for (var i in a){
  if(a.toString() == b.toString()){
    // some code here
  }
}
于 2016-04-05T23:00:09.467 回答