Portail PHP

Forum de discussion et d'aide au php

Vous n'êtes pas identifié.

Annonce

Regles d'utilisation des forums : pensez à toujours les respecter si vous désirez obtenir des réponses rapides.
FAQ : pensez à toujours chercher dedans si la réponse à votre question est dedans.
Proposez vos news : si vous avez un evenement à annoncer
le chat : venez discuter de php.
 

#1 08-07-2005 08:41:36

chips
Membre
Date d'inscription: 21-06-2005
Messages: 34
Site web

comparer deux dates

Salut tlm,

J'ai besoin de comparer deux dates mais je n'y arrive pas.

Le principe est de vérifier qu'une date a plus d'un mois.
J'ai donc récupéré ma date dans ma base, je l'ai déconcaténé mois ajouter 1 au nombre de mois avant de la reconcaténer.

Après j'utilise une fonction que j'ai trouvé sur asp-php.net qui devrait me ressortir le nombre de mois qu'il y a entre les deux dates que je rentre (la date du jour et celle de la base).

Mais ca marche po.
Je récupère 0 comme nombre de mois!
J'ai testé avec des dates saisies directement mais ca me retourne toujours 0

Voici le code:

Code:

function datediff($per,$d1,$d2) 
{
   $d = $d2-$d1;
   switch($per) {
      case "yyyy": $d/=12;
      case "m": $d*=12*7/365.25;
      case "ww": $d/=7;
      case "d": $d/=24;
      case "h": $d/=60;
      case "n": $d/=60;
   }
   return round($d);
}

$nbmois=datediff('m','07-02-2005','07-07-2005');

echo $nbmois; //--- nbmois est toujours à 0

j'ai aussi testé avec des formats de date différents mais ca ne marche pas pour autant : $nbmois=datediff('m','2005-02-07','2005-07-07');

Qu'est-ce que vous en pensez?

Dernière modification par chips (08-07-2005 08:58:02)

Hors ligne

 

#2 08-07-2005 08:59:26

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: comparer deux dates

euh, je doute que ce soit à ce format que tu doive donner tes dates...
je dirait plutot, vu la fonction que tu devrait les donnér au format unix ...

date actuelle au format unix :

Code:

date('U');

calcul d'une date unix : mktime();

Hors ligne

 

#3 08-07-2005 09:23:27

chips
Membre
Date d'inscription: 21-06-2005
Messages: 34
Site web

Re: comparer deux dates

Je vais regarder ca de plus près.

Pour le format, dans la base il est comme ca "aaaa-mm-dd hh:mm:ss" (ex: 2005-07-08 15:18:35).

Donc je pensais que je pourrai la comparer avec la date courante avec le format qu'elle a.

Sans utiliser la fonction datediff, je n'arrive pas à faire ressortir laquelle des dates est la plus récente en faisant un test comme ca:

Code:

if ($datejour >= $datebase)
{
}

C'etait simplement pour etre plus précis et d'après ce que j'ai compris tu me conseille d'utiliser mktime afin de transformer les dates en dates unix afin de pouvoir les comparer ...

Hors ligne

 

#4 08-07-2005 09:32:47

kazhar
Ex-Webmaster
Lieu: Orléans
Date d'inscription: 25-06-2004
Messages: 3381
Site web

Re: comparer deux dates

je pense que tu arrivera plus simplement à quelque chose avec les dates unix.
la date est incrémentée de 1 chaque seconde depuis le 1er janvier 1970.

si tu veut le nombre de mois entre deux dates, il te suffit donc de faire :
(date1 - date2) / nb de secondes dans un mois

Hors ligne

 

#5 08-07-2005 09:36:48

chips
Membre
Date d'inscription: 21-06-2005
Messages: 34
Site web

Re: comparer deux dates

j'ai simplement fait:

Code:

$datebase=mktime(0,0,0, $datebase[2]+1,$datebase[1],$datebase[0]);
$datejour=mktime(0,0,0, date("m"),date("d"),date("Y"));

if ($datejour >= $datebase)
{
      //--- procéder à la suppression
      echo "suppression: ".$datejour.">=".$datebase."<br>";
}
else
{
      echo "passuppression: ".$datebase.">=".$datejour."<br>";
}

Je récupère la date de la base + 1 mois et je la compare avec la date courante.

Parcequ'en fait je dois simplement supprimer certaines données si elles sont stockées dans ma base depuis (au moins) un mois.

Ben c nichel michel.

Merci, j'avai jamais utilisé cette fonction mais si je la connaissai, je pensai pouvoir m'en sortir sans mais c'est tellement plus simple avec.

Encore merci.

Hors ligne