Comparaison de date [Résolu]

Signaler
Messages postés
198
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
16 décembre 2008
-
Messages postés
198
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
16 décembre 2008
-
bonjour



j'ai un petit souci... Je recupère 2 dates et j'aimerais les comparer
pour savoir laquelle est la plus grande. ça parait très simple mais...
voila ce que j'ai mis :



if (date("d/m/Y",filemtime($DossierTemp."/".$file))<date("d/m/Y"))

{
il récupère bien les 2 dates dans le meme format.
j'ai récupérer la date de dernière modif d'un fichier pour la comparer àla date du jour mais ça ne marche pas...

aidez moi svp.



pourtant en sql quand on écrit ça : DateFin<'".date("Y-m-d")."'" ça marche.

13 réponses

Messages postés
198
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
16 décembre 2008
1
malalam a raison ça ne marchait pas pour plusieurs raison :

$date_fic[1] ---> renvoie le premier caractère de la chaine pas la première sous-chaine



donc ma condition est fausse, en plus elle l'est doublement puisqu'il faut regarder "
l'annee, puis le mois, puis le jour."



Je l'avais refait avant de voir vos messages, car ça ne marchait pas donc voila ce que j'ai :





$date_fic=date("d/m/Y",filemtime($DossierTemp."/".$file));

$date_jour=date("d/m/Y");

list($jour1,$mois1,$anne1)=explode("/",$date_fic);

list($jour2,$mois2,$anne2)=explode("/",$date_jour);

if ($anne1<$anne2)

{

unlink($DossierTemp."/".$file);

}else{

if($mois1<$mois2)

{

unlink($DossierTemp."/".$file);

}else{

if($jour1<$jour2)

{

unlink($DossierTemp."/".$file);

}

}

}



voila merci quand meme
Messages postés
198
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
16 décembre 2008
1
c'est bon :



$date_fic=date("d/m/Y",filemtime($DossierTemp."/".$file));

$date_jour=date("d/m/Y");

explode("/",$date_fic);

explode("/",$date_jour);


if ($date_fic[1]<$date_jour[1] &&
$date_fic[2]<=$date_jour[2] &&
$date_fic[3]<=$date_jour[3])

{

unlink($DossierTemp."/".$file);

}

je compare avec le numéro du jour, le numéro du mois et l'année.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Hello,



je ne crois pas que l'on puisse faire ca comme ca en php.

Tu peux convertir la date en secondes et comparer, ou alors la separer en 3 et comparer l'annee, puis le mois, puis le jour.
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Voila lol.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut,



tu peux tout à fait faire ça je vois pas où est le prob ?!



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bah oui, mais ta méthode pour comparer deux dates est bonne :-)



(à savoir accoler l'année, puis le mois et enfin le jour)



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Pour confirmer, Antho, j'ai repondu uniquement a son 1er message, et
entre temps il a ecrit son 2eme...voila tout. Auquel j'ai ajoute
"voila, lol".
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ok

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
208
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2008

ouai sauf que les dates sont des nombres: il suffit de faire



date1=mktime(0,0,0,1,1,2005);

date2=mktime();

if(date1<date2)

print('
date1<date2
');

else


print('
date1>=date2
');
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
ça marche aussi

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
208
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
2 décembre 2008

ca marche certes mais c'est idiot quand tu veux savoir lequel de deux
nombres est le plus petit tu transforme en string fait deux boucles for
et compare par rapport au code ascii

les dates sont des int pourquoi compliquer le code avec des explode() et des date().



Vive l'optimisation du code....
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Bien sûr, mais je te dis seulement que la méthode fonctionne, je n'ai pas dit que c'était optimisé, et loin de là...



Perso je ferai



if(filemtime('machin')<time())

{

//hop

}



alors bon...

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
Messages postés
198
Date d'inscription
jeudi 3 février 2005
Statut
Membre
Dernière intervention
16 décembre 2008
1
c'est vrai que c'est pas optimisé...



quand je devais comparer les dates et que je ne savais pas comment faire j'ai essayé plein de solutions. La fonction "filemtime"
renvoie la date dans un format bizar donc je ne pensais pas pouvoir
m'en servir. Après je pensais qu'il fallait que je les mettent en
format jj/mm/aaaa
mais dans ce format, ça les compare comme des chaines de cractères pas
comme des dates, donc j'ai décomposé la date en récupérant le jour, le
mois et l'année pour les comparer.



Maintenant que j'ai vos solutions bien plus courtes que la mienne
(malgré que le résultat soit le même........) je vais m'en servir pour
réduire mon code.



Merci à vous tous.



@+