Comment parcourir éventail de Dates en Java?
Dans mon script j'ai besoin d'effectuer un ensemble d'actions, par plage de dates, étant donné un début et une date de fin.
Merci de me donner des conseils pour réaliser cela à l'aide de 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 atteindre.
- Java 8 et 9 propre approche : stackoverflow.com/a/51942109/1216775
Vous devez vous connecter pour publier un commentaire.
Eh bien, vous pourriez faire quelque chose comme ceci en utilisant Java 8 est temps-API, pour ce problème spécifiquement
java.temps.LocalDate
(ou l'équivalent Joda Time classes de Java 7 et plus)Je fond vous recommandons d'utiliser
java.time
(ou Joda Time) sur les haut-Date
/Calendar
classes.import
consolidés.JodaTime est agréable, cependant, par souci d'exhaustivité et/ou si vous préférez à l'API fourni des équipements, voici l'API standard approches.
Lors d'un démarrage avec
java.util.Date
instances comme ci-dessous:Voici l'héritage
java.util.Agenda
approche dans le cas où vous n'êtes pas sur Java8 encore:Et voici Java8 de
java.temps.LocalDate
approche, essentiellement exactement le JodaTime approche:Si vous souhaitez effectuer une itération inclusive la date de fin, puis utilisez
!start.after(end)
et!date.isAfter(end)
respectivement.Java 8 style, à l'aide de la java.le temps classes:
De sortie:
Alternative:
Java 9 ajouté le datesUntil() méthode:
C'est essentiellement la même réponse BalusC a donné, mais un peu plus lisible avec une boucle while à la place d'une boucle for:
Apache Commons
Ici est de Java 8 code. Je pense que ce code permettra de résoudre votre problème.Heureux De Codage
Pourquoi ne pas utiliser l'époque et boucle à travers facilement.
Nous pouvons migrer la logique de diverses méthodes ennemi Java 7, Java 8 et Java 9:
Alors nous pouvons appeler ces méthodes comme:
La sortie serait:
Date
etCalendar
classes ont été supplantés par le java.temps classes il y a des années. Plus précisément, remplacé parInstant
etZonedDateDate
.Cela vous aidera à commencer à 30 jours en arrière et boucle jusqu'à la date d'aujourd'hui. vous pouvez facilement changer la plage de dates et de la direction.
Vous pouvez écrire une classe comme ça(mise en place de l'interface iterator) et itérer sur elle .
et de l'utiliser comme :