Heim Java javaLernprogramm Wie berechnet man den Zeitunterschied zwischen zwei Java LocalDateTime-Instanzen genau?

Wie berechnet man den Zeitunterschied zwischen zwei Java LocalDateTime-Instanzen genau?

Dec 04, 2024 pm 07:10 PM

How to Accurately Calculate the Time Difference Between Two Java LocalDateTime Instances?

Berechnen der Zeitdifferenz zwischen LocalDateTime-Instanzen

In Java 8 kann die Berechnung der Differenz zwischen zwei LocalDateTime-Instanzen mithilfe der Klassen Period und Duration erreicht werden . Allerdings weist Ihr Code derzeit einige Ungenauigkeiten auf.

Originalcode-Analyse

Ihr Code verwendet die Period-Klasse, um die Jahre, Monate und Tage zwischen den beiden LocalDateTime-Instanzen zu berechnen . Für den Zeitunterschied konvertieren Sie die Instanzen nur mit den Zeitkomponenten in LocalDateTime und berechnen die Differenz mithilfe von Duration.

Das Problem entsteht, weil bei Ihrer Zeitberechnung davon ausgegangen wird, dass fromDateTime vor toDateTime liegt. Wenn die Datumsangaben nicht in der richtigen Reihenfolge sind, ergeben sich negative Zahlen, die zu falschen Zeitwerten führen.

Verbesserter Algorithmus mit ChronoUnit

Ein robusterer Ansatz beinhaltet die Verwendung der ChronoUnit-Enumeration um den Zeitunterschied zu berechnen. Hier ist der verbesserte Teil Ihres Codes:

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

ChronoUnit stellt eine Reihe vordefinierter Einheiten bereit, die die Differenz zwischen zwei DateTime-Instanzen genau berechnen. Durch Angabe der Einheit als STUNDEN oder MINUTEN kann der Zeitunterschied in der gewünschten Einheit ermittelt werden, ohne dass manuelle Umrechnungen oder die Verarbeitung negativer Werte erforderlich sind.

Aktualisiertes Beispiel

Mit der ChronoUnit-Methode berechnet der Code dann korrekt die Differenz zwischen den eingegebenen LocalDateTime-Instanzen, unabhängig von ihrer Reihenfolge:

LocalDateTime toDateTime = LocalDateTime.of(2014, 9, 9, 19, 46, 45);
LocalDateTime fromDateTime = LocalDateTime.of(1984, 12, 16, 7, 45, 55);
long years = Period.between(fromDateTime.toLocalDate(), toDateTime.toLocalDate()).getYears();
long months = Period.between(fromDateTime.toLocalDate(), toDateTime.toLocalDate()).getMonths();
long days = Period.between(fromDateTime.toLocalDate(), toDateTime.toLocalDate()).getDays();
long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);
long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime);
System.out.println(years + " years " + months + " months " + days + " days " + hours + " hours " + minutes + " minutes.");
Nach dem Login kopieren

Dieser Code berechnet den Zeitunterschied korrekt als „29 Jahre 8 Monate 24 Tage 12 Stunden 0 Minuten.“

Das obige ist der detaillierte Inhalt vonWie berechnet man den Zeitunterschied zwischen zwei Java LocalDateTime-Instanzen genau?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte Mar 07, 2025 pm 06:09 PM

Top 4 JavaScript -Frameworks in 2025: React, Angular, Vue, Svelte

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle? Mar 17, 2025 pm 05:35 PM

Wie funktioniert der Klassenladungsmechanismus von Java, einschließlich verschiedener Klassenloader und deren Delegationsmodelle?

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung? Mar 17, 2025 pm 05:46 PM

Wie benutze ich Maven oder Gradle für das fortschrittliche Java -Projektmanagement, die Erstellung von Automatisierung und Abhängigkeitslösung?

Node.js 20: wichtige Leistungssteigerung und neue Funktionen Node.js 20: wichtige Leistungssteigerung und neue Funktionen Mar 07, 2025 pm 06:12 PM

Node.js 20: wichtige Leistungssteigerung und neue Funktionen

Wie kann ich funktionale Programmierungstechniken in Java implementieren? Wie kann ich funktionale Programmierungstechniken in Java implementieren? Mar 11, 2025 pm 05:51 PM

Wie kann ich funktionale Programmierungstechniken in Java implementieren?

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache? Mar 17, 2025 pm 05:44 PM

Wie implementiere ich mehrstufige Caching in Java-Anwendungen mit Bibliotheken wie Koffein oder Guava-Cache?

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben Mar 07, 2025 pm 05:52 PM

Spring Boot Snakeyaml 2.0 CVE-2022-1471 Problem behoben

Datenpipelines mit Apache Kafka im Jahr 2025 revolutionieren Datenpipelines mit Apache Kafka im Jahr 2025 revolutionieren Mar 07, 2025 pm 06:19 PM

Datenpipelines mit Apache Kafka im Jahr 2025 revolutionieren

See all articles