En utilisant Java 8 time, j'essaie simplement de déterminer le nombre de jours représentés dans une plage de temps. Considérer ce qui suit:

LocalDate start = LocalDate.of(2016, Month.MARCH, 28);
LocalDate end = LocalDate.of(2016, Month.MARCH, 31);
Period period = Period.between(start, end);

Le nombre de jours dans la période est de 3, ce qui représente le nombre de jours entre les 2 dates, début et fin inclus. Ce que je veux, c'est le nombre de jours représentés par les 2 dates qui est en fait 4 (28 mars, 29 mars, 30 mars, 31 mars).

Je sais que je peux simplement ajouter 1 au nombre de jours retournés de Period.between () mais je suppose que j'ai été surpris de ne pas pouvoir trouver un autre appel pour renvoyer exactement ce que je veux. Est-ce que je manque quelque chose ou est-ce que l'ajout de 1 est la seule solution?

3
wxkevin 24 janv. 2017 à 19:48

3 réponses

Il ne semble pas y avoir de méthode de date de fin inclusive dans Period ou LocalDate, il semble donc que la seule chose à faire est quelque chose comme:

Period.between(start, end.plusDays(1))

Ou

start.until(end.plusDays(1))

(Period.between appelle juste LocalDate.until)

2
greg-449 24 janv. 2017 à 17:10

Je crois que le comptage de votre journée diffère de celui de Java. Période.entre-deux selon la documentation: http://docs.oracle.com/javase/8/docs/api/java/time/Period.html#between-java.time.LocalDate-java.time.LocalDate- "La date de début est incluse, mais la date de fin ne l'est pas." Ayant cela à l'esprit - oui, ajouter 1 est la seule solution.

1
Kweldulf 24 janv. 2017 à 17:12

La signature de la méthode est

between(LocalDate startDateInclusive, LocalDate endDateExclusive) {

Et la méthode n'est pas surchargée, vous n'avez pas d'autre choix que d'ajouter 1 au résultat donné ...

0
ΦXocę 웃 Пepeúpa ツ 24 janv. 2017 à 21:16