比较as2中的日期对象

时间:2010-01-05 21:44:30

标签: flash actionscript date comparison actionscript-2

我一定错过了什么。

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 个答案:

答案 0 :(得分:2)

比较这样的两个对象时,你真正要比较的是它们的对象标识,在较低的层次上,它们在RAM中的位置。执行new Date()时,会创建一个新对象,因此即使存储在其中的值存在,两个对象也不会匹配。

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

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

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

干杯