我知道 java Date 的设计很差,但直到今天我才知道如何。
我将日期保存到 DB,当我从 DB 获取它并与原始日期进行比较时,它告诉我它不同!
我写了一个看起来很奇怪的测试,但它通过了!
@Test
public void date_equals() {
Date now = new Date();
Timestamp timestamp = new Timestamp(now.getTime());
assertFalse(timestamp.equals(now));
assertTrue(now.equals(timestamp));
assertTrue(timestamp.compareTo(now) == 0);
assertFalse(now.compareTo(timestamp) == 0);
assertTrue(timestamp.getTime() == now.getTime());
assertTrue(now.getTime() == timestamp.getTime());
}
我注意到 java.sql.Timestamp 在纳秒方面与 Date 略有不同,我不在乎。
谁能告诉我如何在最佳实践中比较这两者?我不想在任何地方比较日期使用 getTime(),是否有任何通用库或其他方法可以做到这一点?
顺便说一句,我正在使用 JDK 6