Vergleich der Daten in Millisekunden

Sagen, ich habe zwei Datumsfelder receiveDate und currentDate. Ich möchte, um zu überprüfen, ob receiveDate war 5 Tage vor dem Systemdatum. Was ich Tat, war, zum konvertieren der Daten in Millisekunden vergleichen und dann gegen 5. Gibt es einen besseren Weg, dies zu tun? Wenn ja, wie und warum die mine ist weniger besser? Danke.

Methode, die ich schrieb -

private static final double DAY_IN_MILLISECONDS = 86400000;

//Param date is the receivedDate
private long getDaysOld(final Date date) {


    Calendar suppliedDate = Calendar.getInstance();
    suppliedDate.setTime(date);
    Calendar today = Calendar.getInstance();
    today.setTime(currentDate);

    double ageInMillis = (today.getTimeInMillis() - suppliedDate.getTimeInMillis());
    double tempDouble;

    if(isEqual(ageInMillis, 0.00) || isGreaterThan(Math.abs(ageInMillis), DAY_IN_MILLISECONDS)) {
        tempDouble =  ageInMillis / DAY_IN_MILLISECONDS;
    } else {
        tempDouble =  DAY_IN_MILLISECONDS / ageInMillis;
    }

    long ageInDays = Math.round(tempDouble);

    return ageInDays;


}

Dann habe ich so etwas wie-

long daysOld = getDaysOld(receivedDate) ;   
if(daysOld <= 5) {
    .... some business code ....
}
Haben Sie Sorge, über der Zeit Veränderungen durch die Sommerzeit? Zweimal im Jahr, wenn Sie nicht aufpassen, Ihre Spannweite wird reduziert auf 4 Stunden oder auf 6 erhöht.
Im Allgemeinen ist dies eine nützliche Maxime zu verabschieden: nicht Ihr eigenes Datum - /Zeit-Berechnungen.
Dein code ist absolut verrückt. Warum sind Sie mit dem Kalender Instanzen gehen von Termin zu einer Millisekunde zählen? Warum ist ageInMillis ein double? Was auf der Erde ist der else-block zu tun?
seine Spannweite beträgt fünf Tage. Aber du hast Recht, darüber müssen die Versorgung mit (Sommer -) Zeit.
Anderson - oops, ich meinte Tage und versagt, lol.

InformationsquelleAutor Milli Szabo | 2010-10-26

Schreibe einen Kommentar