155 votes

Comparer deux dates

Comment comparer deux dates en PHP?

Dans la base de données, la date ressemble à 2011-10-2.

Si je voulais comparer la date d'aujourd'hui à celle de la base de données pour voir laquelle est la plus grande, comment procéderais-je?

J'ai essayé ça,

 $today = date("Y-m-d");
$expire = $row->expireDate //from db

if($today < $expireDate) { //do something; }
 

mais ça ne marche pas vraiment comme ça. Quelle est une autre façon de le faire?

258voto

Hugo Peixoto Points 1291

Si toutes vos dates sont postérieures au 1er janvier 1970, vous pouvez utiliser quelque chose comme:

 $today = date("Y-m-d");
$expire = $row->expireDate //from db

$today_time = strtotime($today);
$expire_time = strtotime($expire);

if ($expire_time < $today_time) { /* do Something */ }
 

Si vous utilisez PHP 5> = 5.2.0, vous pouvez utiliser la classe DateTime:

 $today_dt = new DateTime($today);
$expire_dt = new DateTime($expire);

if ($expire_dt < $today_dt) { /* Do something */ }
 

Ou quelque chose dans ce sens.

87voto

Matthew Points 25748

dans la base de données la date ressemble à ceci 2011-10-2

Stockez-le dans AAAA-MM-JJ, puis la comparaison de chaînes fonctionnera, car '1'> '0', etc.

28voto

d.raev Points 1382

Juste pour complimenter les réponses déjà données, voir l’exemple suivant:

 $today = new DateTime('');
$expireDate = new DateTime( $row->expireDate) //from db

if($today->format("Y-m-d") < $expireDate->format("Y-m-d")) { 
   //do something; 
}
 

10voto

Dr.Molle Points 61743

Je ne le ferais pas avec PHP. Une base de données doit savoir quel jour on est (utilisez MySQL-> NOW () par exemple), il sera donc très facile de comparer dans la requête et de renvoyer le résultat, sans aucun problème en fonction des types de date utilisés.

 SELECT IF(expireDate < NOW(),TRUE,FALSE) as isExpired FROM tableName
 

1voto

isa Points 149

Vous pouvez utiliser un simple PHP pour comparer les dates:

 $date = new simpleDate();
echo $date->now()->compare($expire_date)->isBeforeOrEqual();
 

Cela vous donnera vrai ou faux.

Vous pouvez consulter les tutoriels pour plus d'exemples. S'il vous plaît cliquez ici .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X