Maison >Java >javaDidacticiel >Comment calculer avec précision le nombre de jours entre deux dates Joda-Time ?

Comment calculer avec précision le nombre de jours entre deux dates Joda-Time ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-04 09:48:11148parcourir

How to Accurately Calculate the Number of Days Between Two Joda-Time Dates?

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!

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