在 Javascript 中比较日期对象时,我发现即使比较相同的日期也不会返回 true。
var startDate1 = new Date("02/10/2012");
var startDate2 = new Date("01/10/2012");
var startDate3 = new Date("01/10/2012");
alert(startDate1>startDate2); // true
alert(startDate2==startDate3); //false
我如何比较这些日期的相等性?我有兴趣利用 JS 的原生 Date
对象,而不是任何第三方库,因为使用第三方 JS 只是为了比较日期是不合适的。
最佳答案
那是因为在第二种情况下,比较实际的日期对象,并且两个对象永远不会彼此相等。强制他们编号:
alert( +startDate2 == +startDate3 ); // true
如果您想更明确地转换为数字,请使用:
alert( startDate2.getTime() == startDate3.getTime() ); // true
或
alert( Number(startDate2) == Number(startDate3) ); // true
哦,对规范的引用:§11.9.3 The Abstract Equality Comparison Algorithm这基本上是说在比较对象时,obj1 == obj2
仅当它们引用同一对象时才为真,否则结果为假。
关于JavaScript 日期对象比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606798/