2013-10-12 21 views
1

* UPDATE *我在我的類java.util.Date shippingDate中有一個實例,我需要比較它是否等於當前日期。使用等於比較java中的日期

java.util.Date shippingDate ; 
Calendar g = new GregorianCalendar(); 
shippingDate=g.getTime(); 
if(shippingDate.equals(new Date())) 
{ 
System.out.println("Match found"); 
} 

Equals被覆蓋的日期,所以應該執行sysout.But它不是打印任何東西。

PS#我不允許使用喬達時間庫。

更新 - 是否有任何其他方式來比較shippingDate與當前日期。我不想使用SimpleDateFormat對當前日期進行硬編碼。它必須從系統生成。

+1

@libik這是在'Date'類中。 –

+0

只需將'new Date()'背靠背打印出來,就可以得到這個想法。 –

回答

5

Javadoc給出一個線索(重點煤礦):

public Date()

分配一個Date對象,並且使得它代表在其被分配的時間初始化,量至最近的毫秒

1

當你創建一個新的Date對象,它需要系統的當前時間,所以這兩個日期居然線

Calendar g = new GregorianCalendar(); 

if(shippingDate.equals(new Date())) 
0

具有之間傳遞的毫秒不同您注意到您有兩條線,並且在line 1處獲得日曆對象,並將其與日期對象line 2進行比較,請了解毫秒d兩者的執行時間之間的差異因此它永遠不會相同。如果您嘗試比較多條語句創建了兩個不同的對象

java.util.Date shippingDate ; 
Calendar g = new GregorianCalendar(); //line 1 
shippingDate=g.getTime(); 
if(shippingDate.equals(new Date())) //line 2 
{ 
System.out.println("Match found"); 
} 

結果將永遠是平等的。


解決你的問題在更新: 使用shippingDate.getTime()得到以毫秒爲單位的時間,然後與系統時間使用System.currentTimeMillis()比較這,或者您也可以使用System.nanoTime()但結果絕不會是相同的