我对日历对象进行比较时目前有非常奇怪的行为。Java日历比较方法没有返回正确的结果
我有一种方法是确定当前日期asOfDate
是否在31-DEC-13 lastDayOfDec13
之后。 asOfDate
= 09-JAN-14。我以前使用过类似的比较方法,但我不确定为什么这根本不起作用。
09-JAN-14绝对是在31-DEC-13之后,但它返回false。
我的代码如下:
private Boolean isTodayAfterDec2013() throws Exception {
Calendar asOfDate = getAsOfDate();
Calendar lastDayOfDec13 = getAsOfDate();
lastDayOfDec13.set(Calendar.YEAR, 2013);
lastDayOfDec13.set(Calendar.MONTH, Calendar.DECEMBER);
lastDayOfDec13.set(Calendar.DAY_OF_MONTH, 31);
System.out.println("lastDayOfDec13 "+CommonUtils.getDatebaseFormattedDate(lastDayOfDec13));
System.out.println("asOfDate "+CommonUtils.getDatebaseFormattedDate(asOfDate));
System.out.println("asOfDate.after(lastDayOfDec13) " + asOfDate.after(lastDayOfDec13));
System.out.println("asOfDate.compareTo(lastDayOfDec13) " + asOfDate.compareTo(lastDayOfDec13));
if(asOfDate.after(lastDayOfDec13)) {
System.out.println("Today is after 31-DEC-13");
return true;
}
return false;
}
我的控制台打印:
lastDayOfDec13 31-DEC-13
asOfDate 09-JAN-14
asOfDate.after( lastDayOfDec13)false
asOfDate.compareTo(lastDayOfDec13)-1
有没有关于日历对象的东西,我不明白?今年应该工作得很好。另外,我的要求是使用Calendar对象,我不能使用JODA或任何外部库。
任何帮助将不胜感激。谢谢。
似乎为我工作的罚款。我唯一没有的是'getAsOfDate()'返回的值。尝试使用'SimpleDateFormat'来更充分地设置值的格式,以便您可以看到整年...... – MadProgrammer
是两个日历'GregorianCalendar'? – BevynQ
日历比较时间。两个日历的getTime()输出是什么? – BevynQ