2015-09-29 3 views
-3

J'ai créé un Si une instruction Else mais il ne fonctionne pas correctement. J'ai quelques dates dans mon SQL qui ont été récupérées et stockées dans des variables en utilisant PHP.Opérateurs de comparaison pour les dates en PHP récupérées à partir de SQL ne fonctionne pas

Je compare la date du jour avec les dates de la base de données, mais pour une raison quelconque, il pense par exemple que 29-09-2015 si moins de 31-01-2015.

Je peux comprendre que le format pourrait être le problème d, m, Y mais je pensais que j'avais déjà corrigé cela. Voici le code:

$today = date('d-m-Y'); 
$date = $row['respondby']; 
$euDate= date("d-m-Y", strtotime($date)); 

<?php 


if($today < $euDate){               echo "<td>". $today." is less than ". $euDate ."</td>"; 
} 
else{ 
echo"<td>Lost somewhere in between ?!?!?! :S </td>"; 
} 
?> 

En conséquence, il imprime 29-09-2015 est inférieure à 30-06-2015

date d'aujourd'hui était 29-09-2015 et l'une des dates était en les données étaient celle-ci comme indiqué.

Merci à tous ceux qui aident.

+1

fonctions de date Utiliser comme datediff – ddw147

+1

http://stackoverflow.com/questions/8722806/how-to-compare-two-dates- in-php –

Répondre

1

La comparaison de dates en tant que chaînes utilise l'ordre lexicographique, par conséquent votre résultat est "correct".

Au lieu du format d-m-Y, essayez d'utiliser Y-m-d, cela garantit une bonne commande.

$today = date('Y-m-d'); 
$date = $row['respondby']; 
$euDate= date("Y-m-d", strtotime($date)); 
if($today < $euDate) { [...] } 

Ou, vous pouvez utiliser Date objets au lieu:

$today = new Date('now'); 
$euDate= new Date($row['respondby']); 
if($today < $euDate) { [...] } 
+0

Je crois que les problèmes résident dans le sql, car les données extraites semblent être dans la valeur par défaut. (Y-m-d) J'ai aussi appris en regardant autour du web qu'il peut y avoir une grande différence entre l'utilisation - et/pour séparer les dates. Je vis en Europe donc l'ordre du format est attendu comme (dmY) je l'ai fait travailler par faire strtotime non seulement sur les variables, mais aussi de nouveau (pour une raison quelconque) à l'intérieur de la condition, et enfin imprime le résultat. Bien que l'on me dise que cela pourrait se traduire par une méthode lente tant de mise en forme. –