Ok, ich bin offiziell auf diesem einen ratlos. Ich habe ein GregorianCalendar-Objekt, das ich bestimmen möchte, ob es in der Vergangenheit, Gegenwart oder Zukunft ist. Bisher sind die Calendar#compareTo Dokumente für mich verwirrend, da ich erratische Ergebnisse erhalte. Eine einfache Test Klasse illustriert mein Problem:Java 1.5 Kalender # compareTo() Verwirrung
import java.util.Calendar;
import java.util.GregorianCalendar;
public class MyCal
{
public static void main(String[] args)
{
GregorianCalendar datePast = new GregorianCalendar();
datePast.add(Calendar.MONTH, -6); // subtract 6 months
GregorianCalendar datePresent = new GregorianCalendar();
GregorianCalendar dateFuture = new GregorianCalendar();
datePast.add(Calendar.MONTH, 6); // add 6 months
System.out.println("compare datePresent to datePast: "+datePresent.compareTo(datePast));
System.out.println("compare datePresent to datePresent: "+datePresent.compareTo(datePresent));
System.out.println("compare datePresent to dateFuture: "+datePresent.compareTo(dateFuture));
}
}
Und die Ausgabe:
compare datePresent to datePast: 1
compare datePresent to datePresent: 0
compare datePresent to dateFuture: 0
Mein Verständnis von compareTo ist, dass die letzte Zeile a -1 sein sollte. Kann mir jemand sagen, was ich falsch mache?
Wow, ich fühle mich lächerlich dumm. Danke Jon. – localshred
Wussten Sie, dass es für niemanden möglich ist, eine Frage zu SO über Java Date oder Kalender zu stellen, ohne dass mindestens eine Person Joda Time erwähnt? Wenn es ein SO-Trinkspiel gäbe, wäre das Regel 1. –
Wenn ich also eine Nachfolgefrage habe, sollte ich eine neue Frage erstellen oder diese ändern? – localshred