-2

可能重复:
比较java中的日期

我从服务器获取 yyyy-MM-dd 格式的两个日期。我必须在这两个日期之间进行比较。我使用 compareTo() 方法比较两个日期。假设我的服务器将始终以 yyyy-MM-dd 格式返回非空值,那么比较两个日期的更简单方法是什么?

定义方法

void compareTwoDates(String startDate, String endDate){
        switch(startDate.compareTo(endDate)){
            case -1:
                //START DATE IS BIGGER THAN END DATE
                System.out.println(endDate+" IS BIGGER THAN "+startDate);
                break;
            case 0:
                //BOTH DATE ARE SAME
                System.out.println("SAME DATE");
                break;
            case 1:
                //END DATE IS BIGGER
                System.out.println(startDate+" IS BIGGER THAN "+endDate);
                break;
        }
    }

使用以下方式调用该方法

compareTwoDates("2012-05-06", "2012-04-08");
compareTwoDates("2012-04-09", "2012-04-09");
compareTwoDates("2012-04-09", "2011-05-10");
4

4 回答 4

2

使用方法Date.before()Date.after()

于 2012-04-09T12:01:59.563 回答
1

不要把 String 当作日期来比较……这种方法只会带来痛苦和痛苦。

就像是:

    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date d1 = sdf.parse("2012-04-04");
    Date d2 = sdf.parse("2012-04-05");

将满足您的需求,然后您可以使用 Date compareTo 方法,它将比较应该比较的日期,而不是作为没有年、月等上下文的字符串值。

于 2012-04-09T12:02:30.670 回答
1

检查这个样本。

       if(date1.after(date2)){
           System.out.println("Date1 is after Date2");
        }
        if(date1.before(date2)){
             System.out.println("Date1 is before Date2");
        }
        if(date1.equals(date2)){
             System.out.println("Date1 is equal Date2");
        }
于 2012-04-09T12:15:28.203 回答
0

使用 java.util.Calendar 类 - before 和 after 将完成工作。

解析字符串使用 java.text.SimpleDateFormat

于 2012-04-09T12:02:22.387 回答