代码之家  ›  专栏  ›  技术社区  ›  matt lohkamp

比较AS2中的日期对象

  •  0
  • matt lohkamp  · 技术社区  · 15 年前

    我一定错过了什么。

    date1 = new Date(2010, 01, 10, 12, 10, 30, 000);
    date2 = new Date(2010, 01, 10, 12, 10, 30, 000);
    
    trace(date1 == date2); // returns false
    

    然而,

    date1 = new Date(2010, 01, 10, 12, 10, 30, 000);
    date2 = new Date(2010, 01, 10, 12, 10, 30, 000);
    
    trace(date1.toString() == date2.toString()); // returns true
    

    所以…发生什么事?显然,这两个日期对象在某种程度上是微妙的不同的,当它们被解析为字符串时,这种不同就被忽略了,但是 怎样 它们不同吗?

    1 回复  |  直到 15 年前
        1
  •  2
  •   richardolsson    15 年前

    当您比较这两个对象时,您真正比较的是它们在较低级别上的对象标识,它们在RAM中的位置。当你这样做的时候 new Date() ,这将创建一个新对象,因此两个对象将不匹配,即使存储在其中的值也不匹配。

    但是比较字符串是一种特殊情况,在这种情况下,字符串是逐字符比较的,而不是比较它们在内存中的位置。

    比较日期的常见方法是使用 time 属性,它是一个数字,表示日期对象为Unix时间,即自1970-01-01 00:00:00的Unix时代开始以来的秒数。

    trace(date1.time == date2.time); // traces "true"
    

    干杯