<?php
echo "Aujourd'hui + 1 mois -> ".AjouteMois()."<br />";
echo "Aujourd'hui + 2 mois -> ".AjouteMois("",2)."<br />";
echo "Aujourd'hui - 1 mois -> ".AjouteMois("",-1)."<br />";
echo "2005-3-31 - 1 mois -> ".AjouteMois("2005-3-31",-1)."<br />";
echo "2005-1-28 + 1 mois -> ".AjouteMois("2005-1-28")."<br />";
echo "2005-1-29 + 1 mois -> ".AjouteMois("2005-1-29")."<br />";
echo "2005-1-30 + 1 mois -> ".AjouteMois("2005-1-30")."<br />";
echo "2005-1-31 + 1 mois -> ".AjouteMois("2005-1-31")."<br />";
echo "2005-12-31 + 1 mois -> ".AjouteMois("2005-12-31",1)."<br />";
echo "2005-12-31 + 2 mois -> ".AjouteMois("2005-12-31",2)."<br />";
echo "2005-12-31 + 13 mois -> ".AjouteMois("2005-12-31",13)."<br />";
echo "2005-12-31 + 14 mois -> ".AjouteMois("2005-12-31",14)."<br />";
echo "2005-12-31 + 26 mois -> ".AjouteMois("2005-12-31",26)."<br />";
echo "2005-12-31 + 38 mois -> ".AjouteMois("2005-12-31",38)."<br />";
function AjouteMois($date_depart="",$nbmois=1) {
if($date_depart=="") $date_depart=date("Y",time())."-".date("n",time())."-".date("j",time());
$ddep=explode("-",$date_depart);
$date_dep=mktime(6,0,0,$ddep[1],$ddep[2],$ddep[0]);
$date_fin=mktime(6,0,0,$ddep[1]+$nbmois,$ddep[2],$ddep[0]);
if(date("j",$date_depart)<=29 && date("j",$date_fin)<5) {
$retourm5=mktime(6,0,0,date("n",$date_fin),date("j",$date_fin)-5,date("Y",$date_fin));
$jours_ds_mois=date("t",$retourm5);
return date("Y",$retourm5)."-".date("n",$retourm5)."-".$jours_ds_mois;
} else {
return date("Y-n-j",$date_fin);
}
}
?>
(vous pourrez renommer la fonction si vous vous en servez, car on peut "ajouter" ou "retirer" des mois, valà)