bonjour tt le monde,

j'ai un problème c fait 3 jour que je cherche comme je peux crée une fonction qui fait la différence entre deux dates en excluant les jour férié

après tt mes recherche et mes efforts j'ai pu crée cette fonction:

<script>
function nbJourOuvrable(dateStart,dateStop)
{
var opendays = 0;
var interval = 86400;
var dateFerie =new  Array();
var y=dateStart.getYear()
dateFerie[0]=new Date(y, 1, 1, 0, 0, 0)
dateFerie[0]=new Date(y, 5, 1, 0, 0, 0)
var mSimple = false;
if(dateStart.getYear()== dateStop.getYear()){
mSimple = true;
}
for (var i=dateStart; i <= dateStop; i=i+interval) {
Yi = i.getYear()
if(Yi != y){
dateFerie[0]=new Date(y, 1, 1, 0, 0, 0)
dateFerie[0]=new Date(y, 5, 1, 0, 0, 0)
}

if(i == dateFerie[0]){continue;}
if(i == dateFerie[1]){continue;}

opendays++;
}
    document.forms['form1'].elements['jour'].value=opendays;
}
var date1=document.getElementById('date1')
var date1=document.getElementById('date2')
</script>

<form method="post" action="" name="form1">
Date1 : <input type="text" name="date1" id="date1" /><br /><br />
Date2 : <input type="text" name="date2"id="date2" /><br /><br />
nombre jour : : <input type="text" name="jour" value="0" readonly /><br /><br />
<input type="button" onclick="return nbJourOuvrable(date1,date2)" value="calculer nb jour" />
</form>

mais le problème quand j'ai exécute le code il me donne cette erreur :dateStart.getYear is not a function.
pour cela je cherche comment retourner une annee a partir d'une date comme en php il y a:date('Y', $date_stop) retouner annee de la date $date_stop

Et merci pour vos aide

3 réponses


GetYear est déprécié et plus reconnu par tout les navigateurs. Essaie getFullYear à la place.

hdfs99
Auteur

MERCI JINOU J'ai deja corrige mes erreurs

<script>
function nbJourOuvrable()
{
var dateStart=document.forms['form1'].elements['date1'].value
var dateStop=document.forms['form1'].elements['date2'].value
var opendays = 0;
var interval = 86400;
var dateFerie =new  Array();
var y=dateStart.split("/")
console.log(y);
y=parseInt(y)
var r=dateStop.split("/")
console.log(r);
r=parseInt(r)
dateFerie[0]=new Date(y[2], 1, 1, 0, 0, 0)
dateFerie[1]=new Date(y[2], 5, 1, 0, 0, 0)
var mSimple = false;
if(y[2]==r[2]){
mSimple = true;
}
for (var i=dateStart; i <= dateStop; i=i+interval) {
Yi = i.split("/")
console.log(Yi);
if(Yi[2] != y[2]){
dateFerie[0]=new Date(y[2], 1, 1, 0, 0, 0)
dateFerie[1]=new Date(y[2], 5, 1, 0, 0, 0)
}

if(i == dateFerie[0]){continue;}
if(i == dateFerie[1]){continue;}

opendays++;
}
    document.forms['form1'].elements['jour'].value=opendays;
}

</script>

<form name="form1">
<input type="date" id="date1" name="date1">
<input type="date" id="date2" name="date2">
<input type="text" id="jour" name="jour">
<div onclick="nbJourOuvrable();">Clic</div>
</form>

mais le problème quand j'ai exécute le code je trouve qu'il y a un bug très gênant au niveau de navigateur.
mon erreur ce trouve dans la boucle je sais que mes date se sont de type string j'ai essayer de convertir mes variable au type date mais sans résultat.

Qu'elle est ton erreur exactement ?