Heim > Java > javaLernprogramm > Wie berechnet man Zeitunterschiede zwischen zwei Java 8 LocalDateTime-Instanzen genau?

Wie berechnet man Zeitunterschiede zwischen zwei Java 8 LocalDateTime-Instanzen genau?

Linda Hamilton
Freigeben: 2024-12-06 05:28:14
Original
542 Leute haben es durchsucht

How to Accurately Calculate Time Differences Between Two Java 8 LocalDateTime Instances?

Java 8: Bestimmen von Zeitunterschieden zwischen zwei LocalDateTime-Instanzen

In Java 8 repräsentiert die LocalDateTime-Klasse ein Datum und eine Uhrzeit ohne Zeitzone . Um die Differenz zwischen zwei LocalDateTime-Instanzen zu berechnen, können Sie die Klassen Period und Duration verwenden. Ihr Code liefert jedoch nach dem Monatswert falsche Ergebnisse.

Falscher Code in Ihrer ursprünglichen Implementierung:

Das Problem liegt in der getTime()-Methode, insbesondere in die Berechnung von Stunden, Minuten und Sekunden:

Duration duration = Duration.between(today, now);

long seconds = duration.getSeconds();

long hours = seconds / SECONDS_PER_HOUR;
long minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE);
long secs = (seconds % SECONDS_PER_MINUTE);
Nach dem Login kopieren

Dieser Ansatz ist falsch, da er davon ausgeht, dass die Dauer immer positiv ist. Negative Werte, die auftreten, wenn fromDateTime größer als toDateTime ist, können nicht verarbeitet werden.

Alternativer Ansatz mit ChronoUnit:

Zur genauen Berechnung der Differenz zwischen LocalDateTime-Instanzen, einschließlich Fällen mit negativen Werten Für größere Werte ist es besser, die ChronoUnit zu verwenden enum:

long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime);
long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);
Nach dem Login kopieren

ChronoUnit bietet Methoden zur Berechnung der Differenz in verschiedenen Zeiteinheiten wie Jahren, Monaten, Tagen, Stunden, Minuten und Sekunden. Es verarbeitet sowohl positive als auch negative Werte korrekt.

Durch die Verwendung von ChronoUnit liefert Ihr Code genaue Ergebnisse für alle Szenarien.

Das obige ist der detaillierte Inhalt vonWie berechnet man Zeitunterschiede zwischen zwei Java 8 LocalDateTime-Instanzen genau?. 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