Maison > Java > javaDidacticiel > Comment calculer avec précision les différences de temps entre deux instances Java 8 LocalDateTime ?

Comment calculer avec précision les différences de temps entre deux instances Java 8 LocalDateTime ?

Linda Hamilton
Libérer: 2024-12-06 05:28:14
original
543 Les gens l'ont consulté

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

Java 8 : Détermination des différences horaires entre deux instances LocalDateTime

En Java 8, la classe LocalDateTime représente une date et une heure sans fuseau horaire . Pour calculer la différence entre deux instances LocalDateTime, vous pouvez utiliser les classes Period et Duration. Cependant, votre code donne des résultats incorrects après la valeur du mois.

Code incorrect dans votre implémentation d'origine :

Le problème réside dans la méthode getTime(), en particulier dans le calcul des heures, des minutes et des secondes :

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

Cette approche est incorrecte car elle suppose que la durée est toujours positive. Il ne parvient pas à gérer les valeurs négatives rencontrées lorsque fromDateTime est supérieur à toDateTime.

Approche alternative utilisant ChronoUnit :

Pour calculer avec précision la différence entre les instances LocalDateTime, y compris les cas avec des valeurs négatives valeurs, il est préférable d'utiliser l'énumération ChronoUnit :

long minutes = ChronoUnit.MINUTES.between(fromDateTime, toDateTime);
long hours = ChronoUnit.HOURS.between(fromDateTime, toDateTime);
Copier après la connexion

ChronoUnit fournit des méthodes pour calculer la différence entre diverses unités de temps, telles que les années, les mois, les jours, les heures, les minutes et les secondes. Il gère correctement les valeurs positives et négatives.

En utilisant ChronoUnit, votre code fournira des résultats précis pour tous les scénarios.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal