Bonjour,
Je rencontre le problème suivant : je cherche à additionner le contenu d'objets DateInterval sans y parvenir parfaitement.
Logiquement, en additionnant de tête les intervalles de temps, j'aboutis à un total de 1 an, 6 mois et 17 jours.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 // premier intervalle : 7 mois et 17 jours $intervalle1 = new DateInterval('P7M17D'); // second intervalle : 11 mois $intervalle2 = new DateInterval('P11M');
Or, lorsque je les ajoute l'un après l'autre à une date de départ, je perds curieusement un jour :
L'intervalle total calculé et affiché est en effet 1 an, 6 mois et 16 jours.
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 // J'ajoute à une première date les deux intervalles en question $date = new DateTime('2015-01-01'); $date_nouvelle = new DateTime($date->format('Y-m-d')); $date_nouvelle = $date_nouvelle->add($intervalle1); $date_nouvelle = $date_nouvelle->add($intervalle2); // Afin d'obtenir l'intervalle total je soustrais les deux dates $intervalleTotal = $date->diff($date_nouvelle); echo $intervalleTotal->format('%yA %mM %dJ');
Comment se fait-il qu'un jour ait été retranché ? Le plus curieux, c'est que la méthode de calcul semble varier selon la date de départ ($date) et les intervalles définis. Avec certaines données le calcul sera juste, avec d'autres j'aurai un ou plusieurs jours de décalage.
Existe-t-il une méthode plus fiable pour additionner des intervalles ?
Je vous remercie d'avance pour vos lumières.
GB
Partager