Date

Signaler
Messages postés
47
Date d'inscription
samedi 14 avril 2007
Statut
Membre
Dernière intervention
17 décembre 2013
-
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
-
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

Messages postés
25
Date d'inscription
lundi 9 février 2009
Statut
Membre
Dernière intervention
11 février 2009

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.
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
14
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.
Messages postés
47
Date d'inscription
samedi 14 avril 2007
Statut
Membre
Dernière intervention
17 décembre 2013

Merci bien pour votre aide mais ces deux codes ne résoudent pas mon problème.
Messages postés
341
Date d'inscription
mercredi 17 juillet 2002
Statut
Membre
Dernière intervention
14 juillet 2011
14
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.