这是我在stackoverflow中的第一个问题。
var str="Oct 13,2011";
var date1=new Date(str);
var date2=new Date(str);
当然 的valueOf(DATE1)==的valueOf(DATE2)
但为什么呢 DATE1!= DATE2
或者说,如果两个日期对象彼此相等,如何确定它们。
日期是js对象
答案 0 :(得分:4)
Javascript对象只有在引用相同的对象引用时才相等。在你的代码中并非如此。
(参考:What is the standard definition of object equality for "=="?)
编辑:使用一点点类型转换,您可以执行以下操作:
var str="Oct 13,2011";
var date1 = new Date(str);
var date2 = new Date(str);
console.log(+date1 == +date2); // true
答案 1 :(得分:2)
==
或===
比较对象引用。
Date1和date 2是从不同的引用创建的。因此,他们并不平等。
将date1和date2转换为原始数据类型并进行比较
date1.getTime()=== date2.getTime()
结果:是
答案 2 :(得分:1)
使用==
一般不起作用,因为它比较对象identities而不是值。
在比较之前使用+
前缀或getTime()
转换为毫秒,如果日期对象具有时间组件并且您只想比较它们的日期部分,则也会失败。 (不要试图达到toDate()
方法,因为那是月份的日期,并且丢弃月份和年份!)。
对于没有使用其他库的简洁解决方案,这似乎是toDateString()
有用的少数几次之一。
var date1=new Date("2014-12-10");
var date2=new Date("2014-12-10T01:00");
+date1 == +date2
>false
date1.getTime() == date2.getTime()
>false
date1.toDateString() == date2.toDateString()
>true