这是我的第一个问题在stackoverflow。如何确定2个日期对象是否相等?
var str="Oct 13,2011";
var date1=new Date(str);
var date2=new Date(str);
当然 的valueOf(日期1)==的valueOf(DATE2)
但为什么 日期1!= date2的
,或者说,如何确定2日期对象,如果他们彼此相当的
。
日期是一个js对象
这是我的第一个问题在stackoverflow。如何确定2个日期对象是否相等?
var str="Oct 13,2011";
var date1=new Date(str);
var date2=new Date(str);
当然 的valueOf(日期1)==的valueOf(DATE2)
但为什么 日期1!= date2的
,或者说,如何确定2日期对象,如果他们彼此相当的
。
日期是一个js对象
的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由不同的参考文献创建。因此,它们不是平等的。
您的日期1和date2转换成原始数据类型和比较
date1.getTime()=== date2.getTime()
结果:真
使用==
一般不工作,因为它比较对象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
小调:Javascript区分大小写,这应该是'new Date()',大写'D'。 –