Java日历日期逻辑错误

时间:2012-04-11 10:58:05

标签: java date calendar

我试图找出日期是否在两个特定日期之间。我正在使用日历库来表示日期。我的代码:

public static void double getnumber(Calendar cal){

Calendar cred1 = Calendar.getInstance();
Calendar cred2 = Calendar.getInstance();

    cred1.set(Calendar.JANUARY, 21, 2012);
    cred2.set(Calendar.FEBRUARY, 8, 2012);

    if(cal.after(cred1) && cal.before(cred2)){ 
    System.out.println("case 1");
    }
    else{
    System.out.println("case 2");
    }

}

我正在测试的日期是:

    Calendar test = Calendar.getInstance();
    test.set(Calendar.JANUARY, 25, 2012);
    getnumber(test);

我的问题是,当我测试该日期时,应用程序始终打印“案例2”时应打印“案例1”。有什么想法吗?任何帮助都非常感谢,因为我已经尝试了一切,但似乎没有任何工作,谢谢。

3 个答案:

答案 0 :(得分:3)

The javadoc of Calendar.set(int, int, int)说:

public final void set(int year,
                  int month,
                  int date)
Sets the values for the fields year, month, and date.

您设置了月 - 日 - 年:这不是正确的顺序

答案 1 :(得分:1)

这就是为什么:这是Calendar.set的方法

public final void set(int year, int month, int date)
    {
        set(YEAR, year);
        set(MONTH, month);
        set(DATE, date);
    }

答案 2 :(得分:1)

你有set的论据是错误的。请参阅docs