如何在不使用对象的情况下比较两个日期?

时间:2017-09-07 02:24:21

标签: java compareto

/ **报告date1是否比date2更早出现。例如,isEarlierThan(" 12-01-2015", " 02-15-2017")是真实的,但是早期是(" 10-11-2016"," 10-11-2016")和isEarlierThan(" ; 09-09-1967"," 02-15-1933")是假的。 * /

public static boolean isEarlierThan (String date1, String date2) 

{
    if(date1.compareTo(date2) > 0) {
        return true;
    }
    else if (date1.compareTo(date2) <= 0) {
        return false;
    }
    else {
        return true;
    }
}

此代码有时有效,但并非总是如此。我已经运行了一个测试用例但它失败了。以下测试用例如下。

public void testIsEarlierThan () 
{
    assertTrue(isEarlierThan("12-01-2015", "02-15-2017"));
    assertFalse(isEarlierThan("10-11-2016", "10-11-2016"));
    assertFalse(isEarlierThan("09-09-1967", "02-15-1933"));
    assertTrue(isEarlierThan("02-14-2017", "02-15-2017"));
}

当我运行测试用例时,只有前两个工作,然后它停在第三个。但我不明白什么是错的?如果第一个工作不应该第三个工作正常吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

回答我自己的问题。如果有人有类似的问题,以供将来参考。

public static boolean isEarlierThan (String date1, String date2)
{

    String month1 = date1.substring(0, 2);
    String month2 = date2.substring(0, 2);

    String day1 = date1.substring(3, 5);
    String day2 = date2.substring(3, 5);

    String year1 = date1.substring(6, 10);
    String year2 = date2.substring(6, 10);

    date1 = year1 + month1 + day1; // + month1 + day1
    date2 = year2 + month2 + day2; // + month2 + day2

    if (date1.compareTo(date2) < 0)
    {
        return true;
    }
    else if (date1.compareTo(date2) > 0)
    {
        return false;
    }
    else
    {
        return false;
    }
}

基本上我有一种方法可以将两个日期分开,分为一年,一个月和一天。然后以不同的顺序将它们重新组合在一起,这样当我比较它们时,如果date1在date2之前,它将打印哪个为true;如果date1在date2之后或等于date2,则打印为false。