Date

chourouk86 Messages postés 47 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 17 décembre 2013 - 9 févr. 2009 à 15:38
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 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

4 réponses

jeremyCLIGRAPHCRM Messages postés 25 Date d'inscription lundi 9 février 2009 Statut Membre Dernière intervention 11 février 2009
9 févr. 2009 à 16:43
Bonjour,

Tu peux faire un calcul de date en une ligne :

$retour=$res=date("d/m/Y",mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")));

$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.
0
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
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.
0
chourouk86 Messages postés 47 Date d'inscription samedi 14 avril 2007 Statut Membre Dernière intervention 17 décembre 2013
10 févr. 2009 à 15:14
Merci bien pour votre aide mais ces deux codes ne résoudent pas mon problème.
0
cs_jeca Messages postés 341 Date d'inscription mercredi 17 juillet 2002 Statut Membre Dernière intervention 14 juillet 2011 14
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."

Sinon, explique clairement quel est ton problème.
0