Nur Android Java-Daten vergleichen (ohne Zeit)

Beim Vergleichen von Datum und Uhrzeit in Java wollte ich Stunden ausschließen und nur Daten vergleichen. Beachten Sie, dass ich "2018/04/06 12:15:27" und "2018/04/06 20:47:55" vergleichen und nur beurteilen wollte, ob es am selben Tag war (ohne Zeit).

Es klingt sehr matschig, aber ob es sich um einen Zeitstempel oder eine Datumsklasse handelt, instanziieren Sie einfach die Kalenderklasse, setzen Sie 0 auf Stunden, Minuten, Sekunden und Millisekunden und vergleichen Sie sie mit der compareTo () -Methode der Calendar-Klasse. ist. Gibt es nicht einen intelligenteren Weg, dies zu tun?

//00 ab dem Zeitstempel des entsprechenden Datums und der Uhrzeit:00:00:Erstellen Sie 000 Kalenderinstanzen
int oneDayTimeStamp = 1523017440;
Calendar oneDayCal = Calendar.getInstance();
oneDayCal.setTimeInMillis(oneDayTimeStamp * 1000L);
//Stellen Sie 0 auf Stunde, Minute, Sekunde und Millisekunde ein
oneDayCal.set(Calendar.HOUR_OF_DAY, 0);
oneDayCal.set(Calendar.MINUTE, 0);
oneDayCal.set(Calendar.SECOND, 0);
oneDayCal.set(Calendar.MILLISECOND, 0);

//00 des aktuellen Datums und der aktuellen Uhrzeit:00:00:Erstellen Sie 000 Kalenderinstanzen
Calendar now = Calendar.getInstance();
//Stellen Sie 0 auf Stunde, Minute, Sekunde und Millisekunde ein
now.set(Calendar.HOUR_OF_DAY, 0);
now.set(Calendar.MINUTE, 0);
now.set(Calendar.SECOND, 0);
now.set(Calendar.MILLISECOND, 0);

if (oneDayCal.compareTo(now) == 0) {
    //Wenn es 0 ist, ist das Datum das gleiche
}

Dank @swordone für den Kommentar ist dies bei weitem das klügste!

public int compareByDate (Calendar c1, Calendar c2) {
    int result = c1.get(Calendar.YEAR) - c2.get(Calendar.YEAR);
    return (result != 0) ? result : c1.get(Calendar.DAY_OF_YEAR)- c2.get(Calendar.DAY_OF_YEAR);
}

Dies ist die Methode, die ich von @Luice erhalten habe. Sie müssen eine Bibliothek hinzufügen, benötigen jedoch nur die Methode truncatedCompareTo. Die Methode truncatedCompareTo führt die Methode truncate aus, mit der Stunde, Minute, Sekunde und Millisekunde auf 0 gesetzt werden. Anschließend wird der Zeitstempel aus dem Kalenderobjekt abgerufen und verglichen. Ich möchte die truncatedCompareTo-Methode als Android-API sehen. (Was ist mit Kotlin)

// commons-lang3-3.7.Legen Sie das Glas in den Ordner libs und erstellen Sie.Die folgende Beschreibung wurde zu gradle hinzugefügt
compile files('libs/commons-lang3-3.7.jar') 
// Calendar : c1, Calendar : c2
if (DateUtils.truncatedCompareTo(c1, c2, Calendar.HOUR_OF_DAY) == 0) {
    //Wenn es 0 ist, ist das Datum das gleiche
}

Recommended Posts

Nur Android Java-Daten vergleichen (ohne Zeit)
[JAVA] Nur den Dateinamen abrufen, ausgenommen die Erweiterung
[Java] Verschiedene Daten abrufen
[Java] Datums- / Zeitoperationen
Listen in Java vergleichen