Я использую Gson для преобразования объекта java.util.Date в Json, а затем преобразование JSON обратно в java.util.Date объекта:Java говорит, что эти 2 Дата объекты не равны
Date date = new Date();
System.out.println("date=" + date + "; date.getTime()=" + date.getTime());
String json = gson.toJson(date);
System.out.println("date in json format=" + json);
Date newDate = gson.fromJson(json, Date.class);
System.out.println("newDate=" + newDate + "; gettime=" + date.getTime());
if (!newDate.equals(date)) {
System.out.println("dates are not the same - bad");
}
else
System.out.println("dates are the same - good");
2 Дата объекты должны быть равны, но, как вы можете видеть на выходе, они не являются:
date=Fri Nov 23 12:18:21 EST 2012; date.getTime()=1353691101023
date in json format="Nov 23, 2012 12:18:21 PM"
newDate=Fri Nov 23 12:18:21 EST 2012; gettime=1353691101023
dates are not the same - bad
Как Дата объекты могут быть разными, когда Javadoc для Date.equals() метод говорит, «две даты объекты равны тогда и только тогда, когда метод getTime возвращает такое же длинное значение для обоих? Как видно из вывода, оба объекта Date возвращают одинаковое значение для getTime().
Спасибо, плохая ошибка с моей стороны. Вы правы, newDate.getTime() отличается, поскольку Json не хранит миллисекунды. – pacoverflow