当我创建两个相同的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?
答案 0 :(得分:44)
它显示为this has been addressed already。
要检查日期是否相等,必须将它们转换为原语:
date1.getTime()=== date2.getTime()
//true
答案 1 :(得分:21)
首先,你在比较参考文献时犯了一个错误。看看这个:
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
}
答案 2 :(得分: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
}
}