Dans mon script, je dois effectuer un ensemble d'actions à travers une plage de dates, étant donné une date de début et de fin.
Veuillez me fournir des conseils pour y parvenir en utilisant Java.
for ( currentDate = starDate; currentDate < endDate; currentDate++) {
}
Je sais que le code ci-dessus est tout simplement impossible, mais je le fais pour vous montrer ce que j'aimerais réaliser.
Réponses:
Eh bien, vous pouvez faire quelque chose comme ça en utilisant l'API time de Java 8 , pour ce problème en particulier
java.time.LocalDate
(ou les classes Joda Time équivalentes pour Java 7 et plus ancien)Je bien vous recommandons d' utiliser
java.time
(ou Joda Time) sur le haut-Date
/Calendar
classes.la source
import
déclarations.JodaTime est bien, cependant, dans un souci d'exhaustivité et / ou si vous préférez les installations fournies par l'API, voici les approches API standard.
Au début avec des
java.util.Date
instances comme ci-dessous:Voici l'
java.util.Calendar
approche héritée au cas où vous ne seriez pas encore sur Java8:Et voici l'
java.time.LocalDate
approche de Java8 , essentiellement l'approche JodaTime:Si vous souhaitez itérer la date de fin incluse , utilisez respectivement
!start.after(end)
et!date.isAfter(end)
.la source
Style Java 8 , utilisant les classes java.time :
Production:
Alternative:
Java 9 a ajouté la méthode datesUntil () :
la source
C'est essentiellement la même réponse que BalusC a donnée, mais un peu plus lisible avec une boucle while à la place d'une boucle for:
la source
Apache Commons
la source
addDays(..)
et cela devient encore plus court.la source
la source
Nous pouvons migrer la logique vers différentes méthodes pour Java 7, Java 8 et Java 9 :
Ensuite, nous pouvons invoquer ces méthodes comme:
Le résultat serait:
la source
Date
etCalendar
ont été supplantées par les classes java.time il y a des années. Plus précisément, remplacé parInstant
etZonedDateDate
.Voici le code Java 8. Je pense que ce code résoudra votre problème. Codage heureux
la source
Pourquoi ne pas utiliser epoch et boucler facilement.
la source
Vous pouvez écrire une classe comme celle-ci (implémentation de l'interface d'itérateur) et effectuer une itération dessus.
et utilisez-le comme:
la source
Vous pouvez essayer ceci:
la source
Cela vous aidera à commencer 30 jours en arrière et à boucler jusqu'à la date d'aujourd'hui. vous pouvez facilement changer la plage de dates et la direction.
la source