La fonction diff_date et mktime

[Résolu]
Signaler
Messages postés
9
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
10 janvier 2007
-
Messages postés
9
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
10 janvier 2007
-
Bonjour,
j'ai un probleme avec la fonction diff_date.
Elle utilise la fonction mktime, or voila le message d'erreur que j'ai :

Warning: mktime(): Windows does not support negative values for this function in c:\documents and settings\luc1an0\bureau\www\class\location.class.php on line 38

Voila la fonction diff_date :
function diff_date($day , $month , $year , $day2 , $month2 , $year2)
        {
          /* fonction de calcul de différence de date */
          $time = mktime(0, 0, 0, $month, $day, $year);
          $time2 = mktime(0, 0, 0, $month2, $day2, $year2);
          $diff = floor(($time2 - $time) / (3600 * 24));
          return $diff;
        }

Et voici comment je l'appelle :
//decoupage de la date
            $yyyyAr = date("Y",$laDateAr);
            $mmAr = date("m",$laDateAr);
            $ddAr = date("d",$laDateAr);
            $yyyyDep = date("Y", $laDateDep);
            $mmDep = date("m",$laDateDep);
            $ddDep = date("d", $laDateDep);

 $nbNuits[$this->nbChambres] = $this->diff_date($ddDep, $mmDep, $yyyyDep, $ddAr, $mmAr, $yyyyAr);

6 réponses

Messages postés
9
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
10 janvier 2007

J'ai trouvé la réponse à mon problème, pour ceux que ca intéresserait ...
$date = "2006-05-09"; //une date format MySQL
list($annee,$mois,$jour) = explode("-",$date); //on découpe cette date
$timestamp = mktime(0,0,0,$mois, $jour, $annee); //on peut mettre en place un timestamp



Merci de votre aide !!
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hello,

Warning: mktime(): Windows does not support negative values for this function

c'est assez clair comme message. Il y a des valeurs négatives passées à mktime. Or, le mktime, ici, utilise les arguments que TU as passé à la méthode diff_date ().
Et pour créer ces variables, tu as utilisé TES timestamp : $laDateAr et $laDateDep.
Donc le problème vient de TES timestamp. Personne d'autre que toi ne peut corriger ce problème, ou trouver d'où il vient.
Messages postés
9
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
10 janvier 2007

En fait je viens de trouver la cause de mon probleme.
J ai essaye la fonction avec des valeurs en dur et ca marche.
Mon problème vient du fait que les variables $laDateAr, $laDateDep ne sont pas découpées comme je le voudrais.
En gros mon souci vient du découpage de la date car il me renvoit a chaque fois cette date

01 - 01 - 1970

Voila...
En fait je cherche une méthode pour couper ma date en jour/mois/année sachant qu elle se trouve sous cette forme "yyyy-mm-dd". (Format date MySQL)

Merci de TA réponse ;)
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
POourquoi la découper ? date () a besoin d'un timestamp. Pas d'une date sous forme de chaine.
bref :
$timeStamp = strtotime ($tadatemysql);
Messages postés
2350
Date d'inscription
mercredi 13 octobre 2004
Statut
Membre
Dernière intervention
18 avril 2015
3
"function diff_date($day , $month , $year , $day2 , $month2 , $year2)
{
/* fonction de calcul de différence de date */
$time = mktime(0, 0, 0, $month, $day, $year);
$time2 = mktime(0, 0, 0, $month2, $day2, $year2);
$diff = floor(($time2 - $time) / (3600 * 24));
return $diff;
}"

Beuhhhhh :p
function diff_date ($date1, $date2) {
$date1 = strtotime($date1);
$date2 = strtotime($date2);
$diff = $date2 - $date1;
return date('d-m-Y', $diff);
}

Quelque chose comme ca, c'est plus propre.
Si tes 2 dates viennent d'une requète SQL, autant lefaire via SQL avec DATE_SUB()
Messages postés
9
Date d'inscription
dimanche 20 mars 2005
Statut
Membre
Dernière intervention
10 janvier 2007

En fait mon problème réside depuis le départ dans la fonction date....
Exemple :
$date = "05-06-2006";
echo date("d-m-Y", $date);

renvoit 01-01-1970

:x

En fait je cherche à calculer la difference de jours qu il y a entre 2 dates, ou bien de trouver la date de fin, quand on a la date de début et le nombre de jours.

Merci de vos réponses en tout cas ;)