Jour ouvrable

douda86 -  
 mohamida -
Bonjour,

je travail sur une application en java sous Jdeveloper, elle se consiste en:
En entree de donnee je doit lire une date jj/mm/aaaa
puis je (additionne/soustraire) un nombre (i) de jours ouvrable seulement;
il faut tenir en compte que le samedi et le dimanche ne doivent pas etre calculer c.a.d si on est le 9 du mois
et c un lundi donc le 8 et le 7 du mois ne sont pas pris en compte c.a.d la date retournee si on soustrait 3 jours est le 4 du mois et c la meme chose pour l'addition...

merci bien pour votre aide
A voir également:

4 réponses

sandul Messages postés 4013 Statut Membre 723
 
Salut,

Je ferais ceci (sans garantie d'avoir la meilleure solution):

Disons qu'il s'agit d'une addition. Prendre le jour en semaine de notre date (1 pour lundi, 2 pour mardi etc). Rajouter le nombre de jour voulu et faire une division par 5. Tronquer le résultat. Le nombre obtenu = le nombre de week-ends qui séparent notre date de la date finale ==> ajouter ce nombre * 2 au nombre représentant les jours ouvrables. Nous obtenons le nombre de jours (tout confondu) à rajouter.

Ensuite, c'est bien simple: on transforme notre date en GregorianCalendar et l'on fait une simple addition de jours via la fonction add() du Calendar.

++
0
douda86
 
merci pour ton aide...mais il me reste comment couvertir nombre de jours à une date en java??
0
sandul Messages postés 4013 Statut Membre 723
 
Disons que tu veux rajouter 3 jours à la date dte:

// nous avons une date
java.util.Date dte = new java.util.Date();

// zavons besoin d'un Calendar pour pouvoir faire
// ce genre d'arithmétique
java.util.Calendar cal = java.util.Calendar.getInstance();
cal.setTime(dte);

// rajout de 3 jours
cal.add(java.util.Calendar.DATE, 3);

// éventuellement, on récupère une date flambant neuve
java.util.Date newDte = cal.getTime();


C'est bien ce que tu cherchais ?
0
douda86
 
voila mon code java concernant l'addition d'un nombre de jour maisle probleme c'est que ce code n'est pas executable et la fonction public int traitementNbrJours(int jour, Date date) elle manque du code et je ne sais pas que ce qu'il me manque pour resoudre mon pbm

package oracle.client;

import java.util.GregorianCalendar;

import java.util.Date;

import java.text.SimpleDateFormat;

import java.math.*;

public class traiterDate{

private Date dateEntree;

private int nbrJours;

private Date dateSortie;


public traiterDate(String dateEntree, String nbrJours){

try{

this.dateEntree = stringToDate(dateEntree, "dd/MM/yyyy");

this.nbrJours = Integer.parseInt(nbrJours);

}catch(Exception e){System.out.println(e);}

}


public void traitement (){

int nbrJoursT;

nbrJoursT = traitementNbrJours(nbrJours, dateEntree);

GregorianCalendar date = new GregorianCalendar();

date.setGregorianChange(dateEntree);

date.add(date.DAY_OF_YEAR,nbrJoursT);

dateSortie = date.getGregorianChange();

}


public int traitementNbrJours(int jour, Date date) {

int var;

var = ((jour - date.getDay()) / 7) * 2 + jour;/**à voir ?????????????????????????? le probleme c"est que j'arrive pas a executer ce programme on plus cette fonction la ne retourne pas toujours une date exacte a la date trouvee a la suite d'un tournage a la main la date retournee */

return var;

}

public Date getDateSortie (){

return dateSortie;

}


public static Date stringToDate(String sDate, String sFormat)throws Exception{

SimpleDateFormat sdf = new SimpleDateFormat(sFormat);

return sdf.parse(sDate);

}


}

merci pour m'aider
0
mohamida
 
voici comment faire:
    public static java.util.Date ajouter(java.util.Date date, int nbJours) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        while (nbJours != 1) {
            cal.add(Calendar.DATE, 1);
            if (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
                nbJours--;
            }
        }
        return cal.getTime();
    }

    public static java.util.Date soustraire(java.util.Date date, int nbJours) {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);

        while (nbJours != 1) {
            cal.add(Calendar.DATE, -1);
            if (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) {
                nbJours--;
            }
        }
        return cal.getTime();
    }
0