La fonction diff_date et mktime

Résolu
Luc1an0 Messages postés 9 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 10 janvier 2007 - 5 mai 2006 à 10:57
Luc1an0 Messages postés 9 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 10 janvier 2007 - 6 mai 2006 à 10:58
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

Luc1an0 Messages postés 9 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 10 janvier 2007
6 mai 2006 à 10:58
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 !!
3
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 mai 2006 à 12:29
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.
0
Luc1an0 Messages postés 9 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 10 janvier 2007
5 mai 2006 à 12:56
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 ;)
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
5 mai 2006 à 13:52
POourquoi la découper ? date () a besoin d'un timestamp. Pas d'une date sous forme de chaine.
bref :
$timeStamp = strtotime ($tadatemysql);
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
5 mai 2006 à 20:23
"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()
0
Luc1an0 Messages postés 9 Date d'inscription dimanche 20 mars 2005 Statut Membre Dernière intervention 10 janvier 2007
6 mai 2006 à 10:43
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 ;)
0
Rejoignez-nous