2012-04-11 14 views
0

Ich versuche herauszufinden, ob ein Datum zwischen zwei bestimmten Daten liegt oder nicht. Ich verwende die Kalenderbibliothek, um die Daten zu repräsentieren. Mein Code:Java Kalenderdatum logischer Fehler

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"); 
    } 

} 

Das Datum I-Tests sind, ist dies:

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

Mein Problem ist, dass, wenn ich dieses Datum testen, die Anwendung immer „Fall 2“ drucken, wenn es angenommen hat, drucken " Fall 1". Irgendwelche Ideen warum? Jede Hilfe wird sehr geschätzt, da ich alles versucht habe, aber nichts scheint zu funktionieren, danke.

Antwort

3

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

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

Sie setzen Monat - Tag - Jahr: die

+0

arbeitete dank :) – progdoc

+0

Kein Problem. Wenn es funktioniert, ist es eine gute Art, die Antwort zu akzeptieren –

+0

ye warten auf 15 Minuten, Mate zu bestehen;) – progdoc

1

nicht die richtige Reihenfolge ist, dass die Gründe dafür: diese Methode von Calendar.set ist

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

Sie haben die Argumente zu set falsch herum. Siehe docs.

Verwandte Themen