Java 8 : Détermination des différences temporelles entre deux LocalDates
Calcul de la différence entre deux objets LocalDateTime, exprimée en années, mois, jours, heures , les minutes et les secondes peuvent être une tâche complexe. Une approche consiste à utiliser les classes Period et Duration introduites dans Java 8. Cependant, si la différence implique des valeurs négatives, comme le démontre votre code, cela peut conduire à des résultats incorrects.
Le problème
Votre code calcule la période entre les deux dates, représentant les années, les mois et les jours. Il calcule ensuite le décalage horaire en secondes et convertit ces secondes en heures, minutes et secondes. Cependant, il ne tient pas compte des valeurs négatives qui peuvent survenir lorsque la date « du » est supérieure à la date « jusqu'à ».
La solution
Pour répondre ce problème, nous pouvons utiliser l'énumération ChronoUnit pour déterminer directement le décalage horaire. ChronoUnit fournit un moyen pratique de calculer des unités temporelles, telles que les minutes et les heures, entre deux objets LocalDateTime.
Voici le code mis à jour à l'aide de 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."); } }
Avec cette modification, votre code devrait calculer avec précision la différence temporelle entre les deux objets LocalDateTime.
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!