Calculer les jours entre les dates Joda-Time
Lorsque vous travaillez avec Joda-Time, il est souvent nécessaire de déterminer la différence en jours entre deux dates . Bien que la méthode Days.daysBetween fournisse une solution, elle ne gère pas toujours correctement les ajustements de l'heure d'été (DST).
Pour garantir des calculs de jours précis, utilisez l'approche suivante :
Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays()
Ce code convertit les instances DateTime de début et de fin en LocalDate à l'aide de toLocalDate(), ignorant ainsi l'heure, la minute et la seconde. composants.
Exemple avec ambiguïté DST
Considérez l'exemple suivant avec ambiguïté DST :
// 5am on October 20th to 1pm on October 21st, 2013, Brazil DateTimeZone BRAZIL = DateTimeZone.forID("America/Sao_Paulo"); DateTime start = new DateTime(2013, 10, 20, 5, 0, 0, BRAZIL); DateTime end = new DateTime(2013, 10, 21, 13, 0, 0, BRAZIL); // Using withTimeAtStartOfDay() System.out.println(Days.daysBetween(start.withTimeAtStartOfDay(), end.withTimeAtStartOfDay()).getDays()); // Using toLocalDate() System.out.println(Days.daysBetween(start.toLocalDate(), end.toLocalDate()).getDays());
L'utilisation de withTimeAtStartOfDay() entraîne une réponse incorrecte de 0, alors que la méthode toLocalDate() renvoie correctement 1 jour.
En convertissant en LocalDate, nous supprimons l'ambiguïté causée par l'heure d'été et obtenons une différence plus précise en jours. Cette approche garantit des résultats cohérents quels que soient les considérations de fuseau horaire ou d’heure d’été.
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!