当前位置: 首页 > 面试题库 >

JavaScript日期对象比较

齐阳
2023-03-14
问题内容

当比较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来比较日期。


问题答案:

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

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

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

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

要么

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

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



 类似资料:
  • 代码: 输出:(增加空白行以提高可读性) 有两件事我不明白: null 我还查看了date.equals()的实现: 那么,为什么返回false,尽管为两个对象都返回了1406498400000? 参考:http://docs.oracle.com/javase/7/docs/api/java/util/date.html#equals(java.lang.object)

  • 问题内容: 有人可以建议一种使用JavaScript 比较 两个 大于,小于和过去的 日期 的值的方法吗?这些值将来自文本框。 问题答案: 该Date对象会做你想要的东西- 构造一个每个日期,然后用它们进行比较,,或。 在,,,和运营商要求使用作为 要清楚的是,仅直接检查日期对象是否相等将不起作用 我建议您使用下拉列表或日期输入的某些类似约束形式,而不要使用文本框,以免您陷入输入验证的困境。

  • 我试图排序我的对象数组,这些对象具有按日期最新的第一个和最新的最后一个日期值。 我有以下代码: 请注意,JS Date是新Date()接受的有效日期/格式。 我可以先订购最旧的,但不能先订购最新的,我尝试了以下方法: 当前我不能先按最新日期排序,它只能先按最早的日期排序。 谢啦

  • 问题内容: 我陷入了一个问题,将不胜感激。我已经阅读了很多讨论,但它们似乎对我没有用。 如何将其转换为日期对象?我要这样做的原因是因为我想在google图表指令中使用它,其中列之一必须是日期。我不想将列类型设置为字符串: 例如: 问题答案: 这是我在控制器上所做的 我最终将日期格式化为所需的指令格式,如下所示。 这使我在图表的x轴上以dd / MM / yyyy(26/04/2002)的格式输入日

  • 问题内容: 在JavaScript中比较对象的最佳方法是什么? 例: 我知道如果 两个对象引用的是完全相同的对象 , 则它们相等 ,但是有没有办法检查它们是否具有相同的属性值? 以下方法对我有用,但这是唯一的可能性吗? 问题答案: 不幸的是,除非您递归使用并访问所有不可枚举的属性,否则没有完美的方法,但这仅在Firefox中有效。 因此,我能做的最好是猜测使用情况。 1)快速且有限。 当您具有简单