web-dev-qa-db-fra.com

PHP: Date supérieure à la date actuelle

J'ai ce code:

$curdate = '22-02-2011';

$mydate = '10-10-2011';                     

if($curdate > $mydate)
{
    echo '<span class="status expired">Expired</span>';
}

Cela ferait écho à expiré MAIS ne devrait pas, car $ mydate est dans le futur et donc plus petit que le $ curdate mais PHP ne regarde que les deux premiers nombres 22 et 10 au lieu de la chaîne entière. Comment puis-je réparer cela?

Merci

20
Cameron

Essayez de les convertir d'abord en horodatages, puis comparez deux valeurs converties:

$curdate=strtotime('22-02-2011');
$mydate=strtotime('10-10-2011');

if($curdate > $mydate)
{
    echo '<span class="status expired">Expired</span>';
}

Cela les convertit en nombre de secondes depuis le 1er janvier 1970, votre comparaison devrait donc fonctionner.

56
Zak

Le problème est que vos variables actuelles sont des chaînes et non des variables de temps.

Essayez ceci:

$curdate = strtotime('22-02-2011');

$mydate = strtotime('10-10-2011');  
6
Chris Sobolewski
$row_date = strtotime($the_date);
$today = strtotime(date('Y-m-d'));

if($row_date >= $today){
     -----
}
3
user7156400

Utilisez les classes PHP date/heure pour convertir ces représentations de chaîne en quelque chose que vous pouvez directement comparer à l'aide de getTimestamp () pour comparer les heures UNIX.

Si vous êtes sûr que toutes vos dates sont dans ce format, vous pouvez les découper en tranches en AAAA-MM-JJ. La comparaison des chaînes fonctionnera alors correctement.

1
Chris Nash
if(strtotime($curdate) > strtotime($mydate))
{
...
}
1
Gaurav