Avoir le 5eme jour ouvré d'un mois

Signaler
Messages postés
2
Date d'inscription
vendredi 13 novembre 2020
Statut
Membre
Dernière intervention
13 novembre 2020
-
Messages postés
16099
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
13 novembre 2020
-
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

4 réponses

Messages postés
15083
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 novembre 2020
610
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)
Messages postés
2
Date d'inscription
vendredi 13 novembre 2020
Statut
Membre
Dernière intervention
13 novembre 2020

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
Messages postés
15083
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
13 novembre 2020
610
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.
Messages postés
16099
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
13 novembre 2020
2 722
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.