/ **报告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"));
}
当我运行测试用例时,只有前两个工作,然后它停在第三个。但我不明白什么是错的?如果第一个工作不应该第三个工作正常吗?提前谢谢!
答案 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。