在对日历对象进行比较时,我目前的行为很奇怪。
我有一种方法可以确定当前日期asOfDate
是否在31-DEC-13 lastDayOfDec13
之后。 asOfDate
= 09-JAN-14。我之前使用过类似的比较方法,但我不确定为什么这根本不起作用。
09-JAN-14肯定是在31-DEC-13之后,但它正在返回假。
我的代码如下:
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或任何外部库。
非常感谢任何帮助。感谢。
答案 0 :(得分:0)
您的功能getAsOfDate()
一定是错误的......
public static void main(String[] args) {
Calendar asOfDate = Calendar.getInstance();
asOfDate.set(Calendar.YEAR, 2014);
asOfDate.set(Calendar.MONTH, Calendar.JANUARY);
asOfDate.set(Calendar.DAY_OF_MONTH, 9);
Calendar lastDayOfDec13 = Calendar.getInstance();
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");
}
}
输出
asOfDate.after(lastDayOfDec13) true
asOfDate.compareTo(lastDayOfDec13) 1
Today is after 31-DEC-13