Jour ouvrable
douda86
-
mohamida -
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
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:
- Jour ouvrable
- Mise a jour chrome - Accueil - Applications & Logiciels
- Mise a jour windows 10 - Accueil - Mise à jour
- Mettre a jour chromecast - Accueil - Guide TV et vidéo
- Comment mettre à jour ses pilotes - Guide
- Télécharger mise à jour firmware autoradio chinois - Forum Autoradio
4 réponses
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.
++
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.
++
Disons que tu veux rajouter 3 jours à la date dte:
C'est bien ce que tu cherchais ?
// 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 ?
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
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
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();
}