4

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

4

1 回答 1

10

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

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

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

于 2012-11-27T20:01:43.543 回答