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

How to compare two dates without the use of objects?

/** 报告 date1 是否在时间上早于 date2。例如,isEarlierThan("12-01-2015", "02-15-2017") 为真,但 isEarlierThan("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"));
}

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

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

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 之前,它将打印 which true,如果 date1 在 date2 之后或等于 date2,它将打印 which true。