3 votes

Php comparer des chaînes YYYY-mm-dd en php

Je suis tombé sur du code php qui compare des dates au format YYYY-mm-dd en tant que chaînes de caractères. Est-ce que cela fonctionne? Cela semble fonctionner dans des cas simples, mais je ne suis pas sûr que cela ait du sens de les comparer en tant que chaînes de caractères.

= $today));

if ($on_promo)
{
    echo 'EN promo';
}
else
{
    echo 'HORS promo';
}
?>

4voto

John Conde Points 102874

Vous êtes tellement proche. Utilisez simplement DateTime. C'est parfait pour cela;

= $today));

if ($on_promo)
{
    echo 'ON promo';
}
else
{
    echo 'OFF promo';
}
?>

Voir en action

2voto

Mike Points 5108

Lors de la comparaison de chaînes de caractères en PHP en utilisant plus grand que ou plus petit que, cela les compare dans l'ordre alphabétique.

Alphabétiquement 2013-02-10 vient avant 2013-02-13

Si nous avons :

$date1 = '2013-02-10';
$date2 = '2013-02-13';
var_dump($date2 > $date1); // produit true

var_dump('apple' > 'banana'); // produit false

Cependant, notez que si les chaînes sont toutes deux numériques, elles seront toutes les deux converties en entiers

var_dump('11' > '101'); // produit false
var_dump('a11' > 'a101'); // produit true
var_dump('11a' > '101a'); // produit true

Par conséquent, si vous utilisez le format AAAA-MM-JJ vous pouvez comparer deux dates parfaitement, cependant je ne recommande vraiment pas de compter là-dessus. Quelqu'un pourrait ajouter une date comme 2013-2-11 (notez que le mois n'a pas le zéro initial) et cela perturbera complètement la logique. Il est beaucoup mieux de suivre la suggestion de John Conde et d'utiliser DateTime

1voto

pwolaq Points 5165

Utilisez strtotime au lieu de comparer des dates sous forme de chaînes

= $aujourd_hui));

if ($en_promo)
{
    echo 'EN promo';
}
else
{
    echo 'HORS promo';
}
?>

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