Heim > Java > javaLernprogramm > Wie kann Java 8 die Differenz zwischen zwei LocalDateTime-Instanzen in Jahren, Monaten, Tagen, Stunden und Minuten genau berechnen?

Wie kann Java 8 die Differenz zwischen zwei LocalDateTime-Instanzen in Jahren, Monaten, Tagen, Stunden und Minuten genau berechnen?

Mary-Kate Olsen
Freigeben: 2024-12-15 12:46:12
Original
159 Leute haben es durchsucht

How Can Java 8 Accurately Calculate the Difference Between Two LocalDateTime Instances in Years, Months, Days, Hours, and Minutes?

Java 8: Berechnen der Differenz zwischen zwei LocalDateTime-Instanzen in mehreren Einheiten

Die Berechnung der Differenz zwischen zwei LocalDateTime-Instanzen in verschiedenen Zeiteinheiten kann vorliegen Herausforderungen. Ein Ansatz besteht darin, die in Java 8 eingeführten Period- und Duration-Klassen zu nutzen.

Herausforderungen bei der Erstimplementierung

Der bereitgestellte Code versucht, die Differenz durch Kombination von Period ( (womit Jahre, Monate und Tage verwaltet werden) und Dauer (womit Stunden, Minuten und Sekunden verwaltet werden). Es gibt jedoch einige Inkonsistenzen bei der Berechnung:

  • Die getTime-Methode berechnet Zeitunterschiede nach Monaten falsch.
  • Die für bestimmte Datum-Uhrzeit-Paare gemeldeten negativen Zeitwerte weisen auf ein Problem mit hin Umgang mit negativen Unterschieden.

Verbessert Berechnung

Um genaue Berechnungen sicherzustellen, sollten Sie die Verwendung der ChronoUnit-Enumeration in Betracht ziehen, die Methoden zum Extrahieren bestimmter Zeiteinheiten aus Datums- und Uhrzeitangaben bereitstellt. Hier ist eine verbesserte Version:

import java.time.ChronoUnit;
import java.time.LocalDateTime;
import java.time.Period;

public class CalculateLocalDateTimeDifference {

    public static void main(String[] args) {
        LocalDateTime toDateTime = LocalDateTime.of(2014, 9, 9, 19, 46, 45);
        LocalDateTime fromDateTime = LocalDateTime.of(1984, 12, 16, 7, 45, 55);

        Period period = Period.between(fromDateTime.toLocalDate(), toDateTime.toLocalDate());
        long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime);
        long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);

        System.out.println(period.getYears() + " years " +
                period.getMonths() + " months " +
                period.getDays() + " days " +
                hours + " hours " +
                minutes + " minutes.");
    }
}
Nach dem Login kopieren

Erklärung

  • Period.between berechnet die Differenz in Jahren, Monaten und Tagen bis zu den angegebenen Zeitpunkten .
  • ChronoUnit.MINUTES.between extrahiert den Zeitunterschied in Minuten zwischen den beiden LocalDateTime Instanzen.
  • Ähnlich ermittelt ChronoUnit.HOURS.between die Differenz in Stunden.

Dieser erweiterte Algorithmus liefert genaue Ergebnisse sowohl für positive als auch negative Zeitdifferenzen.

Das obige ist der detaillierte Inhalt vonWie kann Java 8 die Differenz zwischen zwei LocalDateTime-Instanzen in Jahren, Monaten, Tagen, Stunden und Minuten genau berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage