[RESOLU] calculer les mois trimestrielle en fonction d'un mois de reference.

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] calculer les mois trimestrielle en fonction d'un mois de reference.

Re: calculer les mois trimestrielle en fonction d'un mois de reference.

par LeVoL » 18 mai 2015, 11:16

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

Re: calculer les mois trimestrielle en fonction d'un mois de reference.

par yann18 » 11 mai 2015, 16:31

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.

par LeVoL » 11 mai 2015, 15:56

Merci Saian :)

Re: calculer les mois trimestrielle en fonction d'un mois de reference.

par Saian » 11 mai 2015, 15:53

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.

par LeVoL » 11 mai 2015, 15:17

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.

par LeVoL » 11 mai 2015, 15:10

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.

par tof73 » 11 mai 2015, 14:51

c'est pas clair, quel est le résultat auquel il faut aboutir pour 04, 03 ?

calculer les mois trimestrielle en fonction d'un mois de reference.

par LeVoL » 11 mai 2015, 14:48

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 !