Bonjour à tous,
Je suis face à un problème lors de calcul avec les dates sur une appli. A mon avis la solution ne doit pas être très compliquée mais j'ai beau chercher et je n'arrive pas à trouver.
j'ai un fichier PHP appelé en ajax qui me renvoi le json suivant :
j’exécute ensuite le code javascript suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part [{"idDemande":"798","dateDebut":"2014-10-24","dateFin":"2014-10-30","miJourneeDeb":"0","miJourneeFin":"0"}]
Mon json contient une liste de période (demandes de congés)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 nbjourspris=CalculCongePris(response, dateDebutPeriode, dateFinPeriode); //response est la réponse de la requete ajax soit mon json function CalculCongePris(response, dateDebCP, dateFinCP) { var nbjoursCPpris = 0; $.each(response, function(key, val) { datedeb = new Date(val.dateDebut); datef = new Date(val.dateFin); if (val.miJourneeDeb==1) { nbjoursCPpris=nbjoursCPpris-0.5; } if (val.miJourneeFin==1) { nbjoursCPpris=nbjoursCPpris-0.5; } while (datedeb <= datef) { var weekoupas = isWeekend(datedeb); var ferieoupas = isFeries(datedeb, dateFinCP.getFullYear()); plusgrandquedateDebP = datedeb > dateDebCP; pluspetitquedateFinp = datedeb < dateFinCP; console.log(datedeb); // pour debug //Vérifie la période if (plusgrandquedateDebP && pluspetitquedateFinp) { //Vérifie si ce n'est pas un weekend ni un jours férié if (!weekoupas && !ferieoupas) { nbjoursCPpris++; } } datedeb.setDate(datedeb.getDate() + 1); } }) return nbjoursCPpris; }
Ainsi, je devrais récupérer le nombre de jours de congés pris compris entre dateDebutPeriode et dateFinPeriode sachant qu'on enlève les jours fériées et les week end.
Le problème est que j'ai une erreur sur le résultat lorsque j'ai dans mon json une période dans laquelle il y a eu un changement d'heure (passage à l'heure d'hiver par exemple). le problème se pose sur le contenu du json présenté plus haut.
J'ai donc pu identifier que le problème apparait lorsqu'il y a un changement d'heure.
le console.log que j'ai mis dans ma fonction me fait apparaitre qu'il y a un changement du fuseau horaire. Voici ci-dessous ce qui s'affiche dans la console :
Date {Fri Oct 24 2014 02:00:00 GMT+0200}
Date {Sat Oct 25 2014 02:00:00 GMT+0200}
Date {Sun Oct 26 2014 02:00:00 GMT+0100}
Date {Mon Oct 27 2014 02:00:00 GMT+0100}
Date {Tue Oct 28 2014 02:00:00 GMT+0100}
Date {Wed Oct 29 2014 02:00:00 GMT+0100}
On voit donc que l'on passe de GMT+2 à GMT+1 au cours du traitement.
Quelqu'un aurait-il une idée pour corriger ce problème ?
PS : j'espère avoir été assez clair et avoir donné assez de détails mais n'hésitez pas à poser des questions![]()
Partager