两个相同的JavaScript日期不相等

Bry*_*yce 23 javascript date

当我创建两个相同的JavaScript Date对象然后比较它们时,它们似乎不相等.如何测试两个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?
Run Code Online (Sandbox Code Playgroud)

JS Fiddle在这里可用

Bry*_*yce 47

看来已经解决了这个问题.

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

date1.getTime()=== date2.getTime()
//true
Run Code Online (Sandbox Code Playgroud)


sac*_*024 21

首先,你在比较参考文献时犯了一个错误.看看这个:

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

// Looks like the same example huh!
alert (x == y); // It says false
Run Code Online (Sandbox Code Playgroud)

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

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

if (date1 - date2 == 0) {
    // Yep! Dates are equal
} else {
   // Handle different dates
}
Run Code Online (Sandbox Code Playgroud)

  • 很好的答案 - 特别是因为我发现date.GetTime()误导(建议它会给我时间(即使我知道没有时间对象)) (2认同)