2012-04-23 87 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; 
}