如何在不使用对象的情况下比较两个日期?
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。
/** 报告 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。