2012-11-27 46 views
4

我使用GSON轉換一個java.util.Date對象爲JSON,然後轉換回JSON成java.util.Date對象:的Java說,這些2個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對象如何可以是不同的,當Javadoc文檔的Date.equals()方法說「兩個日期當且僅當getTime方法返回相同的long值時,對象纔是相等的「?從輸出中可以看到,兩個Date對象都爲getTime()返回相同的值。

回答

10

第三println()打印錯了對象的getTime()

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

我懷疑,一旦你打印出來newDate.getTime(),你會發現它從date.getTime()不同。

+0

謝謝,我的錯誤。你是對的,newDate.getTime()是不同的,因爲Json沒有存儲毫秒。 – pacoverflow