Java >> Java Tutorial >  >> Tag >> java.util

Vergleichen von zwei java.util.Dates, um zu sehen, ob sie am selben Tag liegen

Calendar cal1 = Calendar.getInstance();
Calendar cal2 = Calendar.getInstance();
cal1.setTime(date1);
cal2.setTime(date2);
boolean sameDay = cal1.get(Calendar.DAY_OF_YEAR) == cal2.get(Calendar.DAY_OF_YEAR) &&
                  cal1.get(Calendar.YEAR) == cal2.get(Calendar.YEAR);

Beachten Sie, dass „am selben Tag“ kein so einfaches Konzept ist, wie es klingt, wenn verschiedene Zeitzonen involviert sein können. Der obige Code berechnet für beide Daten den Tag relativ zu der Zeitzone, die von dem Computer verwendet wird, auf dem er ausgeführt wird. Wenn Sie dies nicht benötigen, müssen Sie die entsprechende(n) Zeitzone(n) an Calendar.getInstance() übergeben Anrufe, nachdem Sie sich entschieden haben, was genau Sie mit "am selben Tag" meinen.

Und ja, Joda Time's LocalDate würde die ganze Sache viel sauberer und einfacher machen (obwohl die gleichen Schwierigkeiten mit Zeitzonen vorhanden wären).


Wie wäre es mit:

SimpleDateFormat fmt = new SimpleDateFormat("yyyyMMdd");
return fmt.format(date1).equals(fmt.format(date2));

Sie können die Zeitzone bei Bedarf auch auf das SimpleDateFormat einstellen.


Ich verwende dazu das Paket "Apache Commons Lang" (nämlich org.apache.commons.lang.time.DateUtils)

boolean samedate = DateUtils.isSameDay(date1, date2);  //Takes either Calendar or Date objects

Java-Tag