Donnez vie à vos documents numériques !
 

Répondre à : Calcul jours ouvrés entre deux dates. – RÉSOLU

abracadabraPDF Forums PDF – Général Calcul jours ouvrés entre deux dates. – RÉSOLU Répondre à : Calcul jours ouvrés entre deux dates. – RÉSOLU

#53070
RafaelLopes
Membre

Oui Merlin je viens de voir, sur Foxit Reader ça marche parfaitement tandis que sur Acrobat reader ca ne marche pas du tout… Je ne sais pas vraiment pourquoi, désolé  :Smiley02:
Concernant mon script… ça marche, j’ai réglé mon problème!
Je crois que le soucis venait du fait que je ne compares pas des dates au formats standard mais un nombre de millisecondes écoulées depuis le 1er janvier 1970… Ce qui veut dire que mon script interprétait le 1er janvier 2012 différemment en fonction de l’heure. Pour m’assurer que le problème venait pas de choses comme le décalage horaire ou encore les changements d’heures, j’ai décidé de passer par la fonction Date.UTC pour que ce soit plus fiable et tout marche nickel :D
Je met le code pour les intéressés(que j’ai grandement allégé et optimisé en passant !)

/* principe de fonctionnement, on calcule le jour de la semaine de la date de départ, on génère tous les jours fériés des années entre les deux dates, on calcul le nombre de jours hors weekend, on y soustrait les jours fériés hors weekend */
function joursOuvres()
{
var Date1 = new Date(this.getField(“dA”).value,this.getField(“dM”).value-1,this.getField(“dJ”).value);
var Date2 = new Date(this.getField(“fA”).value,this.getField(“fM”).value-1,this.getField(“fJ”).value);
var diffA=this.getField(“fA”).value-this.getField(“dA”).value; /* calcule le nombre d’années entre les deux dates pour générer les jours fériés */

Dateuh= new Array();
ferie= new Array();
for(var q=0; q{
ferie[q]= new Array();
ferie[q][0]= Date.UTC(this.getField(“dA”).value+q, 0, 1);
ferie[q][1]= Date.UTC(this.getField(“dA”).value+q, 4, 1);
ferie[q][2]= Date.UTC(this.getField(“dA”).value+q, 4, 8);
ferie[q][3]= Date.UTC(this.getField(“dA”).value+q, 6, 14);
ferie[q][4]= Date.UTC(this.getField(“dA”).value+q, 7, 15);
ferie[q][5]= Date.UTC(this.getField(“dA”).value+q, 10, 1);
ferie[q][6]= Date.UTC(this.getField(“dA”).value+q, 10, 11);
ferie[q][7]= Date.UTC(this.getField(“dA”).value+q, 11, 25);
var G = (this.getField(“dA”).value+q)%19;
var C = Math.floor((this.getField(“dA”).value+q)/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 = ((this.getField(“dA”).value+q)*1 + Math.floor((this.getField(“dA”).value+q)/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 dPaques = Date.UTC((this.getField(“dA”).value+q), MoisPaques-1, JourPaques);
ferie[q][8]= dPaques+(1000*60*60*24);
ferie[q][9]= ferie[q][8]+(38*(1000*60*60*24));
ferie[q][10]= ferie[q][8]+(49*(1000*60*60*24));
}/* génération des jours fériés*/
var Date11= Date.UTC(this.getField(“dA”).value,this.getField(“dM”).value-1,this.getField(“dJ”).value)
var Date22= Date.UTC(this.getField(“fA”).value,this.getField(“fM”).value-1,this.getField(“fJ”).value);

this.getField(“jO”).value=0;
this.getField(“listeFeries”).clearItems();
var index=Date1.getDay();
var Dateuh2=0;

for(var n=Date11; n{
if((index>0) && (index<6))
{
for(var j=0; j{ for(var g=0; g{
if(n==ferie[j][g])
{
Dateuh[Dateuh2]= new Date();
Dateuh[Dateuh2].setTime(n);
this.getField(“listeFeries”).insertItemAt(Dateuh[Dateuh2]);
Dateuh2+=1;
}}}
this.getField(“jO”).value+=1;
index+=1;
}

else if(index>5)
{
index=0;
}
else if(index<1)
{
index+=1;
}

}
var nbrItems=this.getField(“listeFeries”).numItems;
this.getField(“jO”).value=this.getField(“jO”).value-nbrItems;

}

Merci à vous pour votre aide !
Cordialement,
Rafaël Lopes