zu Problemen beim Vergleich von zwei Kalender, Android
Ich wollte zum vergleichen der aktuellen system-Datum auf ein fix-Datum, aber das falsche Ergebnis. Indem Sie versuchen, um herauszufinden, was falsch ist, ich endete mit den folgenden Java-code:
//today, 18th of August 2010
long currSystem = System.currentTimeMillis();
Calendar calToday = Calendar.getInstance();
Calendar calFix = Calendar.getInstance();
long milliToday = calToday.getTimeInMillis();
long milliOlder = calFix.getTimeInMillis();
long deltaOlder = milliOlder - milliToday;
long deltaSystem = currSystem - milliToday;
//1st of August 2010
calFix.set( 2010, 8, 1 );
long milliChanged1 = calFix.getTimeInMillis();
long deltaChanged1 = milliChanged1 - milliToday;
boolean isAfter1 = calToday.after( calFix );
boolean isBefore1 = calToday.before( calFix );
//1st of October 2010
calFix.set( 2010, 10, 1 );
long milliChanged2 = calFix.getTimeInMillis();
long deltaChanged2 = milliChanged2 - milliToday;
boolean isAfter2 = calToday.after( calFix );
boolean isBefore2 = calToday.before( calFix );
Die Ergebnisse im debugger sind:
currSystem: 1282160371775
deltaChanged1: 1209600009
deltaChanged2: 6480000009
deltaOlder: 9
deltaSystem: -25
isAfter1: false
isAfter2: false
isBefore1: true
isBefore2: true
milliChanged1: 1283369971809
milliChanged2: 1288640371809
milliOlder: 1282160371809
milliToday: 1282160371800
Die kleinen Unterschiede für deltaOlder und deltaSystems sind aufgrund der Ausführungszeit, das ist kein problem.
Aber die Ergebnisse des Vergleichs der heute (18. August) und das erste Datum (1. August) ist falsch, IMO. isAfter1 sollte wahr sein und isBefore1 false sein sollte;
Der Vergleich mit dem zweiten Datum (1. Oktober) ist ok.
Jede suggenstion was ich falsch mache in der einfache Sache zu vergleichen zwei Daten?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In ein Kalender-Objekt, month ist 0-basiert, also August sollte 7 und Oktober sollten 9 sein.
Daher, die Sie gerade brauchen, um Ihre "Sätze" zu haben, die richtigen zahlen und es sollte funktionieren.