Maison > Java > javaDidacticiel > Comment calculer avec précision la différence de temps entre deux objets LocalDateTime en Java ?

Comment calculer avec précision la différence de temps entre deux objets LocalDateTime en Java ?

DDD
Libérer: 2024-12-10 13:10:15
original
510 Les gens l'ont consulté

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

Calcul du décalage horaire entre les objets LocalDateTime

Pour répondre à votre préoccupation, le calcul du décalage horaire entre deux objets LocalDateTime nécessite une approche globale qui peut avec précision représentent l'intervalle de temps en plusieurs unités.

L'API Java 8 fournit les classes Période et Durée pour gérer cela efficacement. La période représente un intervalle de temps en termes d'années, de mois et de jours, tandis que la durée concerne les heures, les minutes et les secondes.

Votre code existant utilise la période et la durée pour déterminer le décalage horaire, mais il y a une légère modification. requis. Voici le code mis à jour :

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.");
    }
}
Copier après la connexion

Le changement clé ici consiste à utiliser Duration.between(fromDateTime, toDateTime).getSeconds(); pour calculer la différence des secondes. Cela garantit la précision lorsqu'il s'agit de périodes dépassant minuit ou ayant des valeurs négatives.

Lorsque des nombres négatifs sont impliqués, Duration les gère correctement, fournissant le décalage horaire sous forme de valeur négative. De plus, utiliser ChronoUnit pour des conversions d'unités spécifiques est une approche fiable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal