我一定错过了什么。
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
那么......发生了什么事?显然,这两个日期对象在某种程度上略有不同,当它们被解析为字符串时,它们会以某种方式被忽略,但 它们有何不同?
答案 0 :(得分:2)
比较这样的两个对象时,你真正要比较的是它们的对象标识,在较低的层次上,它们在RAM中的位置。执行new Date()
时,会创建一个新对象,因此即使存储在其中的值存在,两个对象也不会匹配。
比较字符串是一种特殊情况,其中字符串逐字符进行比较,而不是比较它们在内存中的位置。
比较日期的常用方法是使用它们的time
属性,它是一个表示Date对象的数字作为UNIX时间,即自1970-01-01 00:00开始的UNIX纪元以来的秒数: 00。
trace(date1.time == date2.time); // traces "true"
干杯