En Java, obtenez toutes les dates de fin de semaine dans un mois donné
J'ai besoin de trouver tous les week-end dates pour un mois donné et pour une année donnée.
Par exemple: Pour 01(mois) 2010(année), la sortie devrait être : 2,3,9,10,16,17,23,24,30,31, tous les week-end dates.
source d'informationauteur usman
Vous devez vous connecter pour publier un commentaire.
Ici est une version brouillon avec des commentaires décrivant les étapes de:
java.temps
Vous pouvez utiliser le Java 8 flux et la java.en temps. Voici un
IntStream
de1
pour le nombre de jours dans le mois donné est généré. Ce flux est associé à un flux deLocalDate
dans le mois donné ensuite filtré pour garder le samedi et le dimanche.Nous trouvons le même résultat que la première réponse (2 3 9 10 16 17 23 24 30 31).
La Réponse par Lokni semble correct, avec des points de bonus pour l'utilisation de Flux.
EnumSet
Ma suggestion d'amélioration:
EnumSet
. Cette classe est extrêmement efficace de la mise en œuvre deSet
. Représenté en interne en tant que vecteurs de bits, ils sont rapides à exécuter et en prenant très peu de mémoire.À l'aide d'un
EnumSet
vous permet de soft-code la définition du week-end en passant parSet<DayOfWeek>
.Démonstration utilisant l'ancienne syntaxe sans Flux. Vous pourriez adapter Lokni la réponse de code d'utiliser un
EnumSet
d'une manière similaire.TemporalAdjuster
Vous pouvez également faire usage de la
TemporalAdjuster
interface qui fournit des classes pour manipuler date valeurs de temps. LeTemporalAdjusters
classe (notez le pluriels
) fournit plusieurs sous la main implémentations.La ThreeTen-Extra projet fournit des classes de travail avec java.temps. Cela comprend un
TemporalAdjuster
mise en œuvre,Temporals.nextWorkingDay()
.Vous pouvez écrire votre propre implémentation de faire l'inverse, un
nextWeekendDay
temporelle de réglage.Vous pouvez essayer comme ceci: