Page 1 sur 1
calculer les mois trimestrielle en fonction d'un mois de reference.
Posté : 11 mai 2015, 14:48
par LeVoL
Bonjour à tous,
je suis trop quiche avec le calcul des dates et maths en général. J'ai essayé les modulos, les boucles for et if mais ma logique ne parvient pas à réaliser ce que je souhaite.
j'ai un $mois_reference, exemple = 04 (donc avril)...
j'ai besoin de récupérer les mois correspondants au date trimestrielle de ce mois de reference :
$tab_mois_trim = array(04, 07, 10, 01);
un coup de pouche ?
Merci !
Re: calculer les mois trimestrielle en fonction d'un mois de reference.
Posté : 11 mai 2015, 14:51
par tof73
c'est pas clair, quel est le résultat auquel il faut aboutir pour 04, 03 ?
Re: calculer les mois trimestrielle en fonction d'un mois de reference.
Posté : 11 mai 2015, 15:10
par LeVoL
Merci de ton retour, en fait il faut prendre le $mois_de_reference, et lui additioner 3, et stocker ca dans un tableau... mais s'il depasse 12, il doit revenir au mois de janvier (01)
donc pour le mois de reference AVRIL(04) je dois avoir pour resultat un tableau contenant les variables suivantes : AVRIL(04), JUILLET(07),OCTOBRE(10), JANVIER(01)... et s'arreter une fois la boucle bouclé evidemment :p quand il revient au $mois_de_reference.
Re: calculer les mois trimestrielle en fonction d'un mois de reference.
Posté : 11 mai 2015, 15:17
par LeVoL
un autre exemple pour clarifier le retour au mois de janvier
si $mois_de_reference = MARS(03)
resultat = array(03, 06, 09,12)
si $mois_de_reference = NOVEMBRE(11)
resultat = array(11, 02, 05, 08)
Re: calculer les mois trimestrielle en fonction d'un mois de reference.
Posté : 11 mai 2015, 15:53
par Saian
Salut, une façon de faire :
function get_monthes($month)
{
$monthes = array($month);
for($i = 1; $i < 4; $i++) {
$_month = $month + 3 * $i;
$_month = $_month > 12 ? $_month - 12 : $_month;
$_month = $_month < 10 ? "0$_month" : $_month;
$monthes[] = $_month;
}
return $monthes;
}
print_r(get_monthes('01'));/* Array ( [0] => 01 [1] => 04 [2] => 07 [3] => 10 ) */
print_r(get_monthes('04'));/* Array ( [0] => 04 [1] => 07 [2] => 10 [3] => 01 ) */
print_r(get_monthes('08'));/* Array ( [0] => 08 [1] => 11 [2] => 02 [3] => 05 ) */
print_r(get_monthes('11'));/* Array ( [0] => 11 [1] => 02 [2] => 05 [3] => 08 ) */
Re: calculer les mois trimestrielle en fonction d'un mois de reference.
Posté : 11 mai 2015, 15:56
par LeVoL
Merci Saian

Re: calculer les mois trimestrielle en fonction d'un mois de reference.
Posté : 11 mai 2015, 16:31
par yann18
autre solution:
pour revenir au 1er mois lorsque le mois en cours est supérieur à 9, tu peux calculer
(mois+3) modulo 12:
function get_monthes($month)
{
$monthes = array($month);
for($i = 1; $i < 4; $i++) {
$_month = 12+($month + 3* ( $i-12))%12;
$monthes[] = $_month;
}
return $monthes;
}
print_r(get_monthes('01'));
Une autre variante: utiliser DateInterval pour itérer tous les 3 mois
$debut=date_create('2015-05-11');
$fin = clone $debut;
$fin = $fin->modify( '+12 month' );//ajout de 12 mois à la date debut
$interval = new DateInterval('P3M');//incrément de 3
$periode = new DatePeriod($debut, $interval ,$fin);
foreach($periode as $date){
$monthes[] =date_format($date,"Y-m") ;
echo 'mois trim = ', date_format($date,"Y-m") , "<br>";
}
print_r($monthes);
Re: calculer les mois trimestrielle en fonction d'un mois de reference.
Posté : 18 mai 2015, 11:16
par LeVoL
Merci pour ton aide egalement yann18, je suis resté sur la première réponse qui marche au poil

du coup je peux enfin générer des interventions trimestrielle à mes collègues :p
Bonne journée
