Heim >Java >javaLernprogramm >Wie berechnet man die Zeitdifferenz zwischen zwei LocalDateTime-Objekten in Java genau?

Wie berechnet man die Zeitdifferenz zwischen zwei LocalDateTime-Objekten in Java genau?

DDD
DDDOriginal
2024-12-10 13:10:15454Durchsuche

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

Berechnen der Zeitdifferenz zwischen LocalDateTime-Objekten

Um Ihr Anliegen auszuräumen, erfordert die Berechnung der Zeitdifferenz zwischen zwei LocalDateTime-Objekten einen umfassenden Ansatz, der genau kann stellen die Zeitspanne in mehreren Einheiten dar.

Die Java 8-API stellt die Period- und Duration-Klassen bereit, um dies effektiv zu handhaben. Der Zeitraum stellt ein Zeitintervall in Form von Jahren, Monaten und Tagen dar, während sich die Dauer mit Stunden, Minuten und Sekunden befasst.

Ihr vorhandener Code verwendet Zeitraum und Dauer, um den Zeitunterschied zu bestimmen, es gibt jedoch eine geringfügige Änderung erforderlich. Hier ist der aktualisierte Code:

import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.ZoneId;

public class Main {

    static final int MINUTES_PER_HOUR = 60;
    static final int SECONDS_PER_MINUTE = 60;
    static final int SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR;

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

        long seconds = Duration.between(fromDateTime, toDateTime).getSeconds();

        long hours = seconds / SECONDS_PER_HOUR;
        long minutes = ((seconds % SECONDS_PER_HOUR) / SECONDS_PER_MINUTE);
        long secs = (seconds % SECONDS_PER_MINUTE);

        System.out.println(period.getYears() + " years " + 
                period.getMonths() + " months " + 
                period.getDays() + " days " +
                hours + " hours " +
                minutes + " minutes " +
                secs + " seconds.");
    }
}

Die wichtigste Änderung hier ist die Verwendung von Duration.between(fromDateTime, toDateTime).getSeconds(); um die Sekundendifferenz zu berechnen. Dies gewährleistet Genauigkeit beim Umgang mit Zeitspannen, die über Mitternacht liegen oder negative Werte haben.

Wenn negative Zahlen im Spiel sind, verarbeitet Duration diese korrekt und stellt die Zeitdifferenz als negativen Wert bereit. Darüber hinaus ist die Verwendung von ChronoUnit für die Umrechnung bestimmter Einheiten ein zuverlässiger Ansatz.

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

Stellungnahme:
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