chourouk86
Messages postés45Date d'inscriptionsamedi 14 avril 2007StatutMembreDernière intervention17 décembre 2013
-
9 févr. 2009 à 15:38
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 2011
-
10 févr. 2009 à 15:57
Salut,
J'ai fait un code pour un affichage de deux dates (date de jour et date de lendemain) le problème c'est que je veux faire un test de l'année si elle est bissextile ou pas.
Voici mon code pour mieux expliquer:
<? $an=date("L");
$d_d=date("d/m/Y");
$jf=substr($d_d+01,0,2);
$mf=substr($d_d,3,2);
$af=substr($d_d,6,4);
if($jf<10){$jf="0".$jf;}
if($jf>10){$jf=$jf;}
if(($jf>=31)&&(($mf==01)or($mf==03)or($mf==05)or($mf==07)or($mf==08)or($mf==10)or($mf==12)))
{
$jf="0"."1";
$mf="0".($mf+1);
if($mf>=12){$mf="0"."1";
$af+=1;}
}
if(($jf>=30)&&(($mf==04)or($mf==06)or($mf==09)or($mf==11)))
{
$jf="0"."1";
$mf="0".($mf+1);
}
if(($jf==28)&&($mf==02)&&($an==0))
{
$jf="0"."1";
$mf="0"."3";
}
if(($jf==28)&&($mf==02)&&($an==1))
{
$jf="29";
$mf="0"."2";
}
if(($jf==29)&&($mf==02)&&($an==1))
{
$jf="0"."1";
$mf="0"."3";
}
$d_f=$jf."/".$mf."/".$af;
?>
Le problème que si l'année est bessextile et lorsque la date du jour est 28-02 l'affichage du lendemain doit etre 29-02 mais ce qui me s'affiche c'est 01-03.
Svp, si vous trouvez la bonne solution proposez la.
Merci
$retour te retournera toujours la date du jour + 1 jour :)
Ou faire une fonction un peu plus complexe :
function date_incrementee($nombre,$type)
{
//On initialise les variable, ici avec la date du jour :
$hr=date("H");
$mn=date("i");
$se=date("s");
$mo=date("m");
$jr=date("d");
$an=date("Y");
$format_retour="d/m/Y";
//On incrémente la date :
switch ($type)
{
case "ann" : $res=date($format_retour,mktime($hr,$mn,$se,$mo,$jr,$an+$nombre)); break;
case "moi" : $res=date($format_retour,mktime($hr,$mn,$se,$mo+$nombre,$jr,$an)); break;
case "jou" : $res=date($format_retour,mktime($hr,$mn,$se,$mo,$jr+$nombre,$an)); break;
case "heu" : $res=date($format_retour,mktime($hr+$nombre,$mn,$se,$mo,$jr,$an)); break;
case "min" : $res=date($format_retour,mktime($hr,$mn+$nombre,$se,$mo,$jr,$an)); break;
case "sec" : $res=date($format_retour,mktime($hr,$mn,$se+$nombre,$mo,$jr,$an)); break;
default : $res=""; break;
}
return $res;
}
La date de demain est $demain=date_incrementee(1,"jou");
Note : Tu peux modifier cette fonction en ajoutant, par exemple :
-la date en paramètre pour ne pas faire le calcul à partir de la date du jour
-le format de la date de retour en paramètre
____________________________
Jérémy, Membre du projet open source Cligraphcrm.
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 10 févr. 2009 à 05:18
Bonjour,
Dans le genre simple, il y a peut-être mieux :
<?php
$tmp = new DateTime();
$aujourdhui = $tmp -> format('d/m/Y');
$tmp -> modify('+1 day');
$demain = $tmp -> format('d/m/Y');
echo 'Nous sommes le ' . $aujourdhui . ', et demain, nous serons le ' . $demain;
?>
Les années bissextiles sont prises en compte.
cs_jeca
Messages postés341Date d'inscriptionmercredi 17 juillet 2002StatutMembreDernière intervention14 juillet 201114 10 févr. 2009 à 15:57
Cela correspond exactememt à ton problème tel que tu l'as exposé. Je te cite :
"J'ai fait un code pour un affichage de deux dates (date de jour et date de lendemain) le problème c'est que je veux faire un test de l'année si elle est bissextile ou pas.... ...e problème que si l'année est bissextile et lorsque la date du jour est 28-02 l'affichage du lendemain doit etre 29-02 mais ce qui me s'affiche c'est 01-03."