我刚刚遇到了一个非常奇怪的行为。我想用d1.equals(d2);
比较两个完全相同的日期,但是结果是错误的。
在调试时,我发现两个日期的“快速时间”均为1531951200000
。之后,我将支票更改为d1.getTime() == d2.getTime()
,并得到了两者相等的结果。
我还检查了equals()
的{{1}}方法,该方法几乎完全相同
java.util.Date
请注意,两个对象的类型均为public boolean equals(Object obj) {
return obj instanceof Date && getTime() == ((Date) obj).getTime();
}
,这排除了可能存在差异的地方,即java.util.Date
与java.util.Date
。还要注意,其中一个值是从数据库中读取的,而另一个是从文件中读取的。这两个值都使用java.sql.Date
字段设置为同一类的不同实例。
有人对此进行解释吗?还是我只是想念什么?