如何比较Java中的两个不同日期?

时间:2012-04-23 12:50:04

标签: java date compare

我想比较两个不同的日期,并且无论两个日期是否相同,都要这样做?我怎样才能做到这一点?

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

假设上述所有日期都有不同的值,我想比较d1,d2,d3和d4之间的日期。即使他们代表相同的日期。这可能吗?

4 个答案:

答案 0 :(得分: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");      
      }
   }

答案 1 :(得分:1)

我理解你的问题的方式,d1-d2是一个日期范围,d3-d4是另一个日期范围,你希望看到这些是否部分重叠。这是对的吗?

在这种情况下,您可以检查以下内容:

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

}

答案 2 :(得分:0)

d1.getTime()会将日期作为long返回,所以:

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

 if (dif1 == dif2)
    thePeriodsAreEqual();

答案 3 :(得分:0)

比较期间的日期...修改风险服务“

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;
}