我正在使用Gson将java.util.Date对象转换为Json,然后将Json转换回java.util.Date对象:
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对象应该相等,但从输出中可以看出,它们不是:
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
当Date.equals()方法的Javadoc说“当且仅当getTime方法为两者返回相同的long值时,两个Date对象相等”时,Date对象如何不同?从输出中可以看出,两个Date对象都为getTime()返回相同的值。
答案 0 :(得分:10)
第三个println()
打印错误对象的getTime()
:
System.out.println("newDate=" + newDate + "; gettime=" + date.getTime());
^^^^ should be newDate
我怀疑打印出newDate.getTime()
后,您会发现它与date.getTime()
不同。