Java Calendar Comparison方法没有返回正确的结果

时间:2013-12-18 03:11:51

标签: java object calendar comparison compareto

在对日历对象进行比较时,我目前的行为很奇怪。

我有一种方法可以确定当前日期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或任何外部库。

非常感谢任何帮助。感谢。

1 个答案:

答案 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
相关问题