2012-04-23 84 views
4

我想比較兩個不同的日期時間,並且無論這兩個日期時間是否相同,都可以這樣做?我怎樣才能做到這一點?如何在Java中比較兩個不同的日期時間?

Date d1 = new Date(); 
    Date d2 = new Date(); 
    Date d3 = new Date(); 
    Date d4 = new Date(); 

假設所有上述日期有不同的價值觀我想比較D1,D2,D3和D4之間的日期。即使它們代表相同的日期。這可能嗎?

+0

'Date'門店修改毫秒精度的時間。你確定你想看看他們是否完全一樣嗎? – kba 2012-04-23 12:54:20

+1

我不確定我是否理解了所有內容,但有一個訣竅:對於在JAVA中對日期進行的任何操作,請使用更好的'java.util.Calendar'。 – sp00m 2012-04-23 12:55:02

+0

您是否嘗試過使用d1.equals(d3)和d2.equals(d4)? – Teg 2012-04-23 12:56:10

回答

2

您可以使用compareTo方法,如下所示,

import java.util.*; 

public class Main { 
    public static void main(String args[]) 
    {   
      Date today=new Date();      
      Date myDate=new Date(today.getYear(),today.getMonth()-1,today.getDay()); 
      System.out.println("My Date is"+myDate);  
      System.out.println("Today Date is"+today); 
      if(today.compareTo(myDate)<0) 
       System.out.println("Today Date is Lesser than my Date"); 
      else if(today.compareTo(myDate)>0) 
       System.out.println("Today Date is Greater than my date"); 
      else 
       System.out.println("Both Dates are equal");  
     } 
    } 
+0

+1從OOP的角度思考,而不是一個算術的。 – TechSpellBound 2012-04-23 17:07:49

+0

@GauravSakhardande,感謝兄弟。 – 2012-04-24 06:29:10

0

d1.getTime()將返回日期作爲一個長期的,所以:

long dif1 = d2.getTime() - d1.getTime(); 
long dif2 = d4.getTime() - d3.getTIme(); 

if (dif1 == dif2) 
    thePeriodsAreEqual(); 
1

我明白你的問題的方式,d1-d2是一個日期範圍,而d3-d4是另一個日期範圍,並且您希望看到這些是否部分重疊。它是否正確?

在這種情況下,你可以檢查是這樣的:

if(
     (d1.before(d3) && d2.after(d3)) 
    || (d3.before(d2) && d4.after(d2))) { 

} 
0

期比較日期...對於whealther服務`

private boolean chDate(boolean brmv) {

Date bdt = new Date(System.currentTimeMillis()); 
     bdt.setHours(0);`` 


    long time = bdt.getTime(); 


    long[] ttest=new long[5]; 
     ttest[0]=time+1000*60*60*0; 
     ttest[1]=time+1000*60*60*8; 
     ttest[2]=time+1000*60*60*13; 
     ttest[3]=time+1000*60*60*19; 
     ttest[4]=time+1000*60*60*24; 





     long dtmp = //heure à cherché; 
     long la=System.currentTimeMillis(); 
    for(int i=0;i<4;i++) 
     if(ttest[i]<la&&la<ttest[i+1]) 
      if((ttest[i]>dtmp||dtmp>ttest[i+1])) 
        brmv=true; 


    return brmv; 
}