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?

InformationsquelleAutor infero | 2010-08-18
Schreibe einen Kommentar