Maison >Java >javaDidacticiel >Comment calculer avec précision la différence de jour entre deux dates Joda-Time ?

Comment calculer avec précision la différence de jour entre deux dates Joda-Time ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-01 14:59:15937parcourir

How to Accurately Calculate the Day Difference between Two Joda-Time Dates?

Calcul de la différence de jour entre les dates Joda-Time

Dans Joda-Time, déterminer la différence entre deux dates en jours nécessite de prendre en compte les écarts de temps . Pour calculer avec précision le nombre de jours, il est nécessaire d'ignorer les heures, les minutes et les secondes.

Solution originale utilisant Days.daysBetween

La méthode Days.daysBetween apparaît pour apporter une solution adaptée, mais il rencontre des problèmes lorsqu'un rendez-vous a lieu le soir et l'autre le matin. Cela est dû aux cas où « début de la journée » peut faire référence de manière ambiguë à 1 heure du matin plutôt qu'à minuit dans certains fuseaux horaires.

Calcul précis à l'aide de LocalDate

Pour contourner cette ambiguïté , il est recommandé d'utiliser LocalDate au lieu de DateTime en conjonction avec Days.daysBetween. LocalDate représente une date sans information d'heure, garantissant que le résultat reflète la différence en jours uniquement.

Exemple

Considérons l'exemple suivant :

DateTime start = new DateTime(2013, 10, 20, 5, 0, 0, DateTimeZone.forID("America/Sao_Paulo"));
DateTime end = new DateTime(2013, 10, 21, 13, 0, 0, DateTimeZone.forID("America/Sao_Paulo"));

int daysBetween = Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays();

System.out.println(daysBetween); // Prints 1

Conclusion

En utilisant LocalDate, le calcul de la différence de jours devient précis, éliminant incohérences causées par les variations de fuseau horaire et la possibilité que les dates de début et de fin s'étendent sur des jours différents en raison du décalage horaire.

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