Forum de discussion et d'aide au php
Vous n'êtes pas identifié.
|
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. |
||
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:
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 à 0j'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
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 :
date('U');calcul d'une date unix : mktime();
Hors ligne
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:
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
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
j'ai simplement fait:
$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