Java说这两个Date对象不相等

时间:2012-11-27 20:00:03

标签: java date

我正在使用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()返回相同的值。

1 个答案:

答案 0 :(得分:10)

第三个println()打印错误对象的getTime()

System.out.println("newDate=" + newDate + "; gettime=" + date.getTime());
                                                         ^^^^ should be newDate

我怀疑打印出newDate.getTime()后,您会发现它与date.getTime()不同。