Heim >Java >javaLernprogramm >Wie kann man die Anzahl der Tage zwischen zwei Joda-Zeitdaten genau berechnen?
Tage zwischen Joda-Time-Daten berechnen
Bei der Arbeit mit Joda-Time ist es oft notwendig, die Differenz in Tagen zwischen zwei Daten zu ermitteln . Die Days.daysBetween-Methode bietet zwar eine Lösung, verarbeitet jedoch Sommerzeitanpassungen (DST) nicht immer korrekt.
Um genaue Tagesberechnungen sicherzustellen, verwenden Sie den folgenden Ansatz:
Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays()
Dieser Code konvertiert die Start- und End-DateTime-Instanzen mithilfe von toLocalDate() in LocalDate und ignoriert dabei effektiv die Stunde, Minute und Sekunde Komponenten.
Beispiel mit DST-Mehrdeutigkeit
Betrachten Sie das folgende Beispiel mit DST-Mehrdeutigkeit:
// 5am on October 20th to 1pm on October 21st, 2013, Brazil DateTimeZone BRAZIL = DateTimeZone.forID("America/Sao_Paulo"); DateTime start = new DateTime(2013, 10, 20, 5, 0, 0, BRAZIL); DateTime end = new DateTime(2013, 10, 21, 13, 0, 0, BRAZIL); // Using withTimeAtStartOfDay() System.out.println(Days.daysBetween(start.withTimeAtStartOfDay(), end.withTimeAtStartOfDay()).getDays()); // Using toLocalDate() System.out.println(Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays());
Die Verwendung von withTimeAtStartOfDay() führt zu einer falschen Antwort von 0, während die toLocalDate()-Methode korrekt 1 zurückgibt Tag.
Durch die Konvertierung in LocalDate beseitigen wir die durch die Sommerzeit verursachte Mehrdeutigkeit und erhalten eine genauere Differenz in Tagen. Dieser Ansatz gewährleistet konsistente Ergebnisse unabhängig von Zeitzonen- oder Sommerzeitüberlegungen.
Das obige ist der detaillierte Inhalt vonWie kann man die Anzahl der Tage zwischen zwei Joda-Zeitdaten genau berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!