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
Linda Hamiltonoriginal
2024-12-06 05:28:14523parcourir

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

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

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!

Déclaration:
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