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

时间:2013-08-16 08:22:25

标签: java richfaces

我使用RichFaces日历组件。我使用Rich Faces 3并且有两个日历组件。

如何以这种方式比较两个日期值,一个到这两个值可能高于另一个?

这两个值将以这种方式初始化:

Date startDate = new Date();

Date endDate = new Date();

现在我的用户可以在Rich Faces Calendar中选择DateValues,所选的值将保存在变量中。

我如何比较这两个值?

格尔茨

5 个答案:

答案 0 :(得分:4)

你查过文件了吗?根据您的需要,compareTo()before()after()等方法有很多可供选择的方法。 您还可以使用getTime()方法查找自每次纪元以来的毫秒数,然后您可以操纵它们以查找时间之间的时间跨度。

http://docs.oracle.com/javase/6/docs/api/java/util/Date.html

答案 1 :(得分:3)

您可以使用afterbefore方法

startDate.before(endDate);
startDate.after(endDate);

Date实施Comperable<Date>时,方法compareTo也可以正常使用。

答案 2 :(得分:2)

您可以使用compareTo Date方法进行比较

compareTo(Date anotherDate)方法返回

  

如果参数Date等于此Date,则值为0;价值减去   如果此Date在Date参数之前,则为0;并且值更大   如果此Date在Date参数之后,则为0。

答案 3 :(得分:2)

compareTo(Date date)是Date类的一种方法,用于比较两个日期 这个方法:

  • 如果两个日期相等,则返回值为0.

  • 如果Date在日期参数之后,则返回值大于0。

  • 如果Date在日期参数之前,则返回值小于0.

     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date date1 = sdf.parse("2012-10-31");
    Date date2 = sdf.parse("2013-01-21");
    
    
    if(date1.compareTo(date2)>0){
                    System.out.println("Date1 is after Date2");
                }else if(date1.compareTo(date2)<0){
                    System.out.println("Date1 is before Date2");
                }else if(date1.compareTo(date2)==0){
                    System.out.println("Date1 is same as Date2");
                }else{
                    System.out.println("never gets executed");
                }
    

答案 4 :(得分:1)

要比较两个日期,您应该使用compareTo()方法:

if(startDate.compareTo(endDate) > 0)

此方法

  1. 如果日期相等则返回0
  2. 如果日期在日期参数
  3. 之后,则返回正值 如果日期在日期参数之前,
  4. 返回负值