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

我如何比较这些日期的相等性?我有兴趣利用 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/

相关文章:

java - 是否可以使用 jsp 变量值来初始化 JQUERY 变量?

javascript - Facebook 的 URL 匹配算法如何工作?

javascript - 向文本区域内的每个新行添加项目符号

javascript - window.location(加上 Y 偏移量)替代方案?

javascript - 水平滚动表上的 "Sticky"标题...完全不可能?

javascript - 带有bindToController的指令无法从子指令获取数据

javascript - d3 v5 : How to transition only when a specific attribute changed?

javascript - 如何使用两个数组创建 json 数据并将其返回给 ajax

javascript - 如何用jquery调用文件输入点击?

javascript - 替代 document.getElementById() 的 JavaScript/jQuery 最佳实践是什么?