PHP – Comparer les dates (deux dates) – astuce très pratique
Écrit par Oussamamai 31
Hi all,
Pendant le développement d’un site web dynamique j’ai bien galérer avec une tout petite partie de ce dernier. Le principe de cette partie était de créer un espace membre: dans cet espace chaque membre pourra vérifier l’état de son abonnement (un abonnement payant) et la vérification devra être fait automatiquement, c’est a dire dès qu’un membre se connecte sur son espace, un script php doit faire la comparaison entre la date du jour et la date de fin de l’abonnement et afficher une image et un texte selon l’état de l’abonnement. Mais le seul problème qui m’a rencontré était: Comment comparer les dates (deux dates) en php (date de commencement de l’abonnement et date de fin) pour savoir si un abonnement valide ou non?
C’était tout bête mais je n’ai pas fait attention au début ![]()
Voilà la solution pour comparer deux dates en php si quelqu’un en aura besoin:
< ?php //---------------------------------------------------------------- // Astuce trouvée sur http://blog.galerie-cesar.com //---------------------------------------------------------------- $datejour = date('d/m/Y'); //la date du fin est stocké dans une base de données $datefin= $donnees['fin']; //on extracte la date du fin depuis la bdd et on la met dans une variable $datefin $dfin = explode("/", $datefin); //explode pour mettre la date du fin en format numerique: 12/05/2006 -> 12052006 $djour = explode("/", $datejour); //explode pour mettre la date du jour en format numerique: 31/05/2009 -> 31052009 $finab = $dfin[2].$dfin[1].$dfin[0]; // concaténation pour inverser l'ordre: 12052006 -> 20060512 $auj = $djour[2].$djour[1].$djour[0]; // concaténation pour inverser l'ordre: 31052009 -> 20090531 // Ensuite il suffit de comparer les deux valeurs if ($auj>$finab) { //--------------------------------------------------------Abonnement expiré;--------------------------------- echo "abonnement expiré": } else { //-------------------------------------------------------Abonnement en cours-------------------------------- echo "abonnement valide": } ?>
Voila donc ma façon de comparer deux dates en php.
Merci de laisser un commentaire si vous trouvez l’astuce utile
No related posts.



13 comments
Commentaire par TonTon le 7 juin 2009 à 19 h 56 min
Sans commentaire.. court,simple… bravo …ça faisait 2h que je cherchais…des truc tordus avec des include de class ça j’en ai trouvé !!….mais ton truc fallait y penser …encore bravo et merci.
Commentaire par Oussama le 7 juin 2009 à 20 h 53 min
Merci pour votre commentaire
N’hésitez pas de mettre un lien vers cet article si ce dernier vous a aidé
Ping par News Slider - Défilement d'infos - en utilisant jQuery | Blog Galerie César le 10 juin 2009 à 1 h 52 min
[...] un ancien article traitant la façon de comparer deux dates en php, voila un deuxième article concernant le développement [...]
Commentaire par bhr_zied le 22 juin 2009 à 2 h 39 min
Merci pour la comparaison c tr simple idée et pratique et j’ajoute un exemple pour chercher le nombre de jour entre deux dates:
function NbJours($debut, $fin) {
$tDeb = explode(« - », $debut);
$tFin = explode(« - », $fin);
$diff = mktime(0, 0, 0, $tFin[1], $tFin[2], $tFin[0]) –
mktime(0, 0, 0, $tDeb[1], $tDeb[2], $tDeb[0]);
return(($diff / 86400)+1);
}
// Comment apeler la fonction
$Nombres_jours = NbJours(« 2000-10-20″, « 2000-10-22″);
// Affiche 2
echo $Nombres_jours;
?>
Commentaire par Wallace le 23 juin 2009 à 10 h 37 min
Magnifique et simple! Merci beaucoup à toi Oussama, ta méthode m’aura aidé dans l’écriture de mon script PHP. Encore une fois merci et bravo!
Commentaire par GuilleW le 25 juin 2009 à 12 h 35 min
Bonjour, en utilisant la POO :
// date à tester :
$now = date(‘Y-m-d’);
$next = ‘2050-01-01′
// test
$now = new DateTime( $now );
$now = $now->format(‘Ymd’);
$next = new DateTime( $next );
$next = $next->format(‘Ymd’);
if( $now < $next ) echo « next est dans le futur »;
else echo « next est dans le passé »;
La POO rend le code plus claire et lisible, parfois les commentaires ne sont même plus necessaire !
Salutation.
Commentaire par GuilleW le 25 juin 2009 à 12 h 37 min
[edit]
Désolé, j’ai oublié le ;
$next = ‘2050-01-01′;
Commentaire par lilizzy le 24 juillet 2009 à 16 h 16 min
Super Oussama! Très astucieux!! Merci beaucoup!
Commentaire par Oussama le 24 juillet 2009 à 16 h 27 min
Merci
Commentaire par Laurent le 6 août 2009 à 3 h 49 min
Salut,
Bien comme code, mais pourquoi ne pas utiliser simplement les dates déjà formatés
$datejour= (« Ymd »);
$datefutur = date(« 20500101″);
if($datejour > $datefutur)
{
echo $datefutur.’ est dans le futur…;
}else
{
echo $datefutur.’ est dans le passé…);
}
Bonne continuation
Commentaire par Oussama le 6 août 2009 à 4 h 31 min
on est obligé de faire ça car ces dates devront être affiché. Donc soit on les inverse lors de la comparaison soit lors de l’affichage et personnellement je préfère faire ça lors de la comparaison et laisser l’affichage standard.
Commentaire par Vassili le 17 novembre 2009 à 1 h 38 min
Un grand merci a toi, je n’ai jamais utilisé le temps sur php autrement qu’en tchat et pour enregistrer des dates d’inscriptions.
Tu m’épargne des jours de recherche.
Commentaire par kimjoa le 6 février 2010 à 21 h 09 min
je développes un calendrier pour le cms modx , ton système de comparaison ma bien aidé ! très ingénieux ! merci