Heim > Java > javaLernprogramm > Wie kann Java 8 zeitliche Unterschiede zwischen zwei lokalen Daten genau berechnen und negative Werte verarbeiten?

Wie kann Java 8 zeitliche Unterschiede zwischen zwei lokalen Daten genau berechnen und negative Werte verarbeiten?

Mary-Kate Olsen
Freigeben: 2024-12-08 05:55:11
Original
358 Leute haben es durchsucht

How Can Java 8 Accurately Calculate Temporal Differences Between Two LocalDates, Handling Negative Values?

Java 8: Bestimmen zeitlicher Unterschiede zwischen zwei LocalDate

Berechnen der Differenz zwischen zwei LocalDateTime-Objekten, ausgedrückt in Jahren, Monaten, Tagen, Stunden , Minuten und Sekunden können eine komplexe Aufgabe sein. Ein Ansatz besteht darin, die in Java 8 eingeführten Period- und Duration-Klassen zu verwenden. Wenn die Differenz jedoch negative Werte umfasst, wie Ihr Code zeigt, kann dies zu falschen Ergebnissen führen.

Das Problem

Ihr Code berechnet den Zeitraum zwischen den beiden Daten und stellt die Jahre, Monate und Tage dar. Anschließend berechnet es den Zeitunterschied in Sekunden und wandelt diese Sekunden in Stunden, Minuten und Sekunden um. Es werden jedoch keine negativen Werte berücksichtigt, die auftreten können, wenn das „Von“-Datum größer als das „Bis“-Datum ist.

Die Lösung

Anzusprechen Bei diesem Problem können wir die ChronoUnit-Enumeration verwenden, um den Zeitunterschied direkt zu bestimmen. ChronoUnit bietet eine bequeme Möglichkeit, Zeiteinheiten wie Minuten und Stunden zwischen zwei LocalDateTime-Objekten zu berechnen.

Hier ist der aktualisierte Code mit ChronoUnit:

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

public class Main {

    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);

        long years = ChronoUnit.YEARS.between(fromDateTime, toDateTime);
        long months = ChronoUnit.MONTHS.between(fromDateTime, toDateTime);
        long days = ChronoUnit.DAYS.between(fromDateTime, toDateTime);
        long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);
        long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime);
        long seconds = ChronoUnit.SECONDS.between(fromDateTime, toDateTime);

        System.out.println(years + " years " + months + " months " + days + " days " +
                hours + " hours " + minutes + " minutes " + seconds + " seconds.");
    }
}
Nach dem Login kopieren

Mit dieser Änderung sollte Ihr Code Berechnen Sie genau die zeitliche Differenz zwischen den beiden LocalDateTime-Objekten.

Das obige ist der detaillierte Inhalt vonWie kann Java 8 zeitliche Unterschiede zwischen zwei lokalen Daten genau berechnen und negative Werte verarbeiten?. 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