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 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
| // les paramètres sont de type MM/AAAA
// cela retourne un tableau associatif de type $r["01/2006"] = "1e trimestre"
function intervalle_trimestres($debut,$fin)
{
$r = array();
list($mois_min,$annee_min)=explode("/",$debut);
list($mois_max,$annee_max)=explode("/",$fin);
// infos sur le trimestre de debut
$tab_deb = $this->no_trimestre_mois($mois_min);
$trim_debut = $tab_deb[0];
$mois_debut = $tab_deb[1];
// infos sur le trimestre de fin
$tab_fin = $this->no_trimestre_mois($mois_max);
$trim_fin = $tab_fin[0];
$mois_fin = $tab_fin[1];
// parcours des années
for ($index_a = $annee_min ; $index_a <= $annee_max ; $index_a++)
{
if ($index_a == $annee_min) // si on en est à l'année de début
{
$m_deb_trait = $mois_debut; // mois de début
if ($index_a == $annee_max) // si c'est la date de fin : mm année
{
if ($trim_debut == $trim_fin) // si mm trimestre
{
$r[sprintf("%02d", $m_deb_trait)."/".$index_a] = $trim_debut."e trimestre";
}
else
{
for ($i = $trim_debut ; $i<= $trim_fin ; $i++) // parcours des trimestres
{
$r[sprintf("%02d", $m_deb_trait)."/".$index_a] = $i."e trimestre ".$index_a; // 01/2005 => 1er trimestre
$m_deb_trait = $m_deb_trait + 3;
}
}
}
else
{
// il y a une année qui suit
for ($i = $trim_debut ; $i<= 4 ; $i++) // parcours des trimestres
{
$r[sprintf("%02d", $m_deb_trait)."/".$index_a] = $i."e trimestre ".$index_a; // 01/2005 => 1er trimestre
$m_deb_trait = $m_deb_trait + 3;
}
}
}
else
{
// annee supérieure à celle du début
if ($index_a != $annee_max)
{
$m_deb_trait = 1; // mois de début
for ($j=1;$j<=4;$j++) // on remplit tous les trimestres de l'année
{
$r[sprintf("%02d", $m_deb_trait)."/".$index_a] = $j."e trimestre ".$index_a;
$m_deb_trait = $m_deb_trait + 3;
}
}
else
{
// année maximale
$m_deb_trait = 1; // mois de début
// on remplit tous les trimestres de l'année
for ($k=1;$k<=$trim_fin;$k++)
{
$r[sprintf("%02d", $m_deb_trait)."/".$index_a] = $k."e trimestre ".$index_a;
$m_deb_trait = $m_deb_trait + 3;
}
}
}
}
$r = array_reverse($r, TRUE);
return $r;
}
// fonction retournant le trimestre et le n° du 1er mois de celui ci
function no_trimestre_mois($p_mois)
{
$tab = array();
// 1 <= m <= 3
if(($p_mois >= 1) and ($p_mois <= 3))
{
$tab = array(1, 1);
}
// 4 <= m <= 6
if(($p_mois >= 4) and ($p_mois <= 6))
{
$tab = array(2, 4);
}
// 7 <= m <= 9
if(($p_mois >= 7) and ($p_mois <= 9))
{
$tab = array(3, 7);
}
// 10 <= m <= 12
if(($p_mois >= 10) and ($p_mois <= 12))
{
$tab = array(4, 10);
}
return $tab;
} |
Partager