Java说这两个Date对象不相等

pac*_*low 4 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");
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

当Date.equals()方法的Javadoc说"当且仅当getTime方法为两者返回相同的long值时,两个Date对象相等"时,Date对象如何不同?从输出中可以看出,两个Date对象都为getTime()返回相同的值.

NPE*_*NPE 10

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

System.out.println("newDate=" + newDate + "; gettime=" + date.getTime());
                                                         ^^^^ should be newDate
Run Code Online (Sandbox Code Playgroud)

我怀疑,一旦你打印出来newDate.getTime(),你会发现它不同于date.getTime().