Avoir le 5eme jour ouvré d'un mois

Fermé
JeuneCodeur Messages postés 2 Date d'inscription vendredi 13 novembre 2020 Statut Membre Dernière intervention 13 novembre 2020 - 13 nov. 2020 à 11:47
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 13 nov. 2020 à 20:45
Bonjour à tous,

Je crée une application gérant des planifications, j'ai pas mal de cas à gérer comme avoir le 1er jour d'un mois, 3 eme samedi d'un mois, etc...

Je bloque sur le cas pour récupérer le 5eme jour ouvré d'un mois, je ne trouve pas de fonction déjà existante pour m'aider et je ne vois pas comment je peux faire...


Un jour ouvré c'est un jour où on travail donc pas le Wk par exemple si le premier jour du mois c'est mercredi 01 juillet 2020 le 5eme jour ouvré c'est mardi 7 juillet car on ne compte pas le WK


LocaleDate firstDayOFMonth = LocateDate.now().withDayOhMonth(1); // récupère le premier jour du mois
LocalDate workingday = firstDayOhMonth.plusDays(5);


Et je n'arrive pas conceptualisé la boucle...

Tant que FirstDayOfmonth n'arrive pas à 5 et elle doit passer par des conditions pour pas compter le WK


Si vous avez des idées je suis preneur..

Merci d'avance
A voir également:

4 réponses

Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
13 nov. 2020 à 12:05
Bonjour

Dans ton explication tu ne parles pas des jours fériés.
Dois tu en tenir compte? Car géré le week-end c’est bien plus simple que les jours fériés.

Sans les jours fériés
Si le samedi est un jour ouvré:
  • si le premier jour du moi est un dimanche, un lundi ou un mardi, le 5eme jour ouvré est le 5 du moi
  • dans le cas contraire, le 5eme jour ouvré est le 6 du moi.


Si le samedi n’est pas un jour ouvré.
  • si le premier jour du moi est dimanche ou un lundi, le 5eme jour ouvré est le 5 du moi
  • dans le cas contraire, le 5eme jour ouvré est le 7 du moi.


S’il y a un jour férié qui tombe le week-end ça ne change rien, mais s’il tombe un jour ouvré ça décale.

C’est facile de gérer les dates fixent (par exemple le 1er mai), mais les dates fluctuantes, il faut les calculer (lundi de Pentecôte par exemple)
0
JeuneCodeur Messages postés 2 Date d'inscription vendredi 13 novembre 2020 Statut Membre Dernière intervention 13 novembre 2020
13 nov. 2020 à 12:12
Oui, je dois également gérer les jours féries mais je voulais déjà gérer le WK.

Je visualise la méthode que je dois adapter mais j'arrive pas à la retranscrire en code
0
Whismeril Messages postés 19026 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 20 avril 2024 931
13 nov. 2020 à 19:39
Je ne t'aiderai pas dans la mise en musique Java, je ne connais pas ce langage.

Pour les jours fériés fixes français, tu peux exclure ceux venant après le 7 du moi.
Il reste
  • jour de l'an
  • 1er mai
  • La Toussaint



Pour les jour fériés français fluctuant, il faut avant tout calculer la date de Pâques.
https://fr.wikipedia.org/wiki/Calcul_de_la_date_de_P%C3%A2ques

Les autres en découlent:
  • Le lundi de Pâques, c'est le lendemain de Pâques
  • le jeudi de l'ascension c'est 39 jours après Pâques
  • le lundi de Pentecôte c'est 50 jours après Pâques


Selon les années, chacune de ces 3 dates peut se trouver avant le 7 du moi et donc avoir une influence sur ton calcul.
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
13 nov. 2020 à 20:45
Bonjour,

Tu devrais décomposer ton code en 5 méthodes :
  • boolean isWeekEnd(LocalDate)
  • LocalDate getDimanchePaques(Year)
  • boolean isJourFerie(LocalDate)
  • LocalDate nextJourOuvre(LocalDate)
  • LocalDate getNthJourOuvre(Month,Year,int)

La dernière méthode - celle qui t'intéresse - n'étant au final qu'une boucle appelant la méthodes d'avant.
0