2012-04-11 105 views
0

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

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

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. 

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

+0

工作感谢:) – progdoc 2012-04-11 11:05:28

+0

没问题。如果有效,接受 – 2012-04-11 11:07:31

+0

等待15分钟的搭档是很好的方式;) – progdoc 2012-04-11 11:11:56

1

这就是为什么:这是Calendar.set

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

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