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
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
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, ;
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