Java相等日期不相等

Xtr*_*mer 5 java date equals

我刚刚遇到了一个非常奇怪的行为。我想比较2个使用完全相同的日期d1.equals(d2);,但结果是错误的。

调试时,我发现两个日期的“快速时间”为1531951200000。之后,我将检查更改为d1.getTime() == d2.getTime()并得到了相等的结果。

我还检查equals()的方法,java.util.Date这确实几乎完全一样

public boolean equals(Object obj) {
    return obj instanceof Date && getTime() == ((Date) obj).getTime();
}
Run Code Online (Sandbox Code Playgroud)

请注意,这两个对象都是类型java.util.Date这就排除了,有可能是一个区别,即java.util.DateVS java.sql.Date。还要注意,其中一个值是从数据库中读取的,而另一个是从文件中读取的。这两个值都设置为带有java.util.Date字段的同一类的不同实例。

有人对此有解释吗?还是我只是想念一些东西?