小编典典

JavaScript日期对象比较

javascript

当比较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

我如何比较这些日期的相等性?我对利用DateJS 的本机对象(而不是任何第三方库)感兴趣,因为它不适合仅使用第三方JS来比较日期。


阅读 906

收藏
2020-05-01

共1个答案

小编典典

这是因为在第二种情况下,将比较实际的日期对象,并且两个对象永远不会彼此相等。强迫他们编号:

 alert( +startDate2 == +startDate3 ); // true

如果要更明确地转换为数字,请使用以下任一方法:

 alert( startDate2.getTime() == startDate3.getTime() ); // true

要么

 alert( Number(startDate2) == Number(startDate3) ); // true

哦,对规范的引用:§11.9.3在比较对象时基本上说的抽象平等比较算法,obj1==obj2仅当它们引用相同的对象时才为true,否则结果为false。

2020-05-01