Calcul du nombre de jours ouvrables

Soyez le premier à donner votre avis sur cette source.

Snippet vu 21 469 fois - Téléchargée 27 fois

Contenu du snippet

Code permettant de calculer à partir de la date du jour (possibilité de changer le code pour accepter une autre date) et du nombre de jour ouvrable voulu(ici 15 (cpt_j < 16)) la date à partir de laquelle il est possible de.
--->Prends en compte les jours feries.
Ex: on est le 5 septembre + 15 jours ouvrables = 26 septembre 2003.

Source / Exemple :


function JoursFeries (an){
  var JourAn = new Date(an, "00", "01");
  var FeteTravail = new Date(an, "04", "01");
  var Victoire1945 = new Date(an, "04", "08");
  var FeteNationale = new Date(an,"06", "14");
  var Assomption = new Date(an, "07", "15");
  var Toussaint = new Date(an, "10", "01");
  var Armistice = new Date(an, "10", "11");
  var Noel = new Date(an, "11", "25");
  //**var SaintEtienne = new Date(an, "11", "26");**//

  var G = an%19;
  var C = Math.floor(an/100);
  var H = (C - Math.floor(C/4) - Math.floor((8*C+13)/25) + 19*G + 15)%30;
  var I = H - Math.floor(H/28)*(1 - Math.floor(H/28)*Math.floor(29/(H + 1))*Math.floor((21 - G)/11));
  var J = (an*1 + Math.floor(an/4) + I + 2 - C + Math.floor(C/4))%7;
  var L = I - J;
  var MoisPaques = 3 + Math.floor((L + 40)/44);
  var JourPaques = L + 28 - 31*Math.floor(MoisPaques/4);
  var Paques = new Date(an, MoisPaques-1, JourPaques);
  //**var VendrediSaint = new Date(an, MoisPaques-1, JourPaques-2);**//
  var LundiPaques = new Date(an, MoisPaques-1, JourPaques+1);
  var Ascension = new Date(an, MoisPaques-1, JourPaques+39);
  var Pentecote = new Date(an, MoisPaques-1, JourPaques+49);
  var LundiPentecote = new Date(an, MoisPaques-1, JourPaques+50);

  //**SaintEtienne et Vendredi Saint sont des fêtes exclusivement**//
  //**alscacienne. On les ignore dans notre cas.**//
  return new Array(JourAn, Paques, LundiPaques, FeteTravail, Victoire1945, Ascension, Pentecote, LundiPentecote, FeteNationale, Assomption, Toussaint, Armistice, Noel);
}

//******************************************************************************************************************************//
//************************Calcul de la date minimum de portage (15 jours ouvrables après la date du jour)***********************//
//******************************************************************************************************************************//
function calc_date_mini(){

	var date_now = new Date();
	var date_now_annee = date_now.getFullYear();
	var date_now_mois = date_now.getMonth();
	var date_now_jour = date_now.getDate();

	//**init. des compteurs**//
	var cpt_i = 0;
	var cpt_j = 0;
	var cpt_k = 0;

	//**init. des tableaux récupérant les jours feries de l'annee en cours et de l'annee suivante.**//
	var tab_1=new Array;
	var tab_2=new Array;
	tab_1=JoursFeries(date_now.getFullYear());
	tab_2=JoursFeries(date_now.getFullYear()+1);

	for(cpt_i=0; cpt_j < 16 ; cpt_i++) {
		var date_eval = new Date(date_now_annee, date_now_mois, date_now_jour+cpt_i);
		var day_date_eval = date_eval.getDay();
		if((day_date_eval != 6) && (day_date_eval != 0)) {
			cpt_j++;
			for(cpt_k = 0; cpt_k <13; cpt_k++){
				if(date_eval.getMonth() == tab_1[cpt_k].getMonth() && date_eval.getFullYear() == tab_1[cpt_k].getFullYear() && date_eval.getDate() == tab_1[cpt_k].getDate()){
					cpt_j--;
					break;
				}
				if(date_eval.getMonth() == tab_2[cpt_k].getMonth() && date_eval.getFullYear() == tab_2[cpt_k].getFullYear() && date_eval.getDate() == tab_2[cpt_k].getDate()){
					cpt_j--;
					break;
				}
			}
		}
	}
	return date_eval;
}

//******************************************************************************************************************************//
//************************Fonction de vérification si une date entrée est au de^là de la date minimum***************************//
//******************************************************************************************************************************//
function verif_date_mini(date_entree, date_mini){
	var date_entree_n = new Date(date_entree);
	var date_mini_n = new Date(date_mini);

	if (date_entree_n != "") {
	//**Transformation d'une date en jj/mm/aaaa en mm/jj/aaaa puis en date :Fri Sep 5 15:14:41 UTC+0200 2003)**//
		date_entree_jour = date_entree.substring(0,2);
 		date_entree_mois= date_entree.substring(3,5);
 		date_entree_annee = date_entree.substring(6,10);
 		nouvelle_date_entree = new Date(date_entree_annee, date_entree_mois-1, date_entree_jour);

		if (nouvelle_date_entree.getTime()<date_mini_n.getTime()) {
			return 0;
		}
		else {
		return 1;
		}
	}
}
//************************Fin du code de JORRY Julien***************************************************************************//

A voir également

Ajouter un commentaire

Commentaires

Messages postés
393
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
29 septembre 2008

Salut
tres sympa kom code ca va bien me servir
Par contre je voudrai bien savoir a koi correspondent c calculs savants :

var G = an%19;
var C = Math.floor(an/100);
var H = (C - Math.floor(C/4) - Math.floor((8*C+13)/25) + 19*G + 15)%30;
var I = H - Math.floor(H/28)*(1 - Math.floor(H/28)*Math.floor(29/(H + 1))*Math.floor((21 - G)/11));
var J = (an*1 + Math.floor(an/4) + I + 2 - C + Math.floor(C/4))%7;
var L = I - J;
var MoisPaques = 3 + Math.floor((L + 40)/44);
var JourPaques = L + 28 - 31*Math.floor(MoisPaques/4);

Merci
Messages postés
3
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
24 juin 2004

je l'ai pas tester mais jme garde ton code source sous le coude au cas où parce que ça peut toujours servir :p

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.