PHP - Comparaison de dates

Fermé
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 - Modifié par boss183 le 19/05/2011 à 16:16
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 - 20 mai 2011 à 09:50
Bonjour à tous,

je viens vers vous car je souhaite comparer des dates et je ne vois pas trop comment coder ça. Alors je vous explique :
Je récupère dans une base de donnée la date de début d'un contrat au format aaaa-mm-jj (c'est du varchar) et la durée de ce contrat en mois, je souhaiterais obtenir la date de fin dans le même format, je ne sais pas trop comment faire "l'addition".
De plus, une fois cette date de fin de contrat obtenu, je voudrais pouvoir la "comparer" avec la date d'aujourd'hui et si cette date se situe par exemple dans moins de deux mois j'affiche un message à l'utilisateur.

Pouvez-vous m'aider à coder cela ?

Merci d'avance

A voir également:

2 réponses

chrij Messages postés 115 Date d'inscription jeudi 10 juin 2010 Statut Membre Dernière intervention 20 mai 2011 49
19 mai 2011 à 17:14
Bonjour,
je n'ai pas de quoi faire du php sous la main pour vérifier si ça fonctionne mais voilà quelques idées pour résoudre le problème :

1.convertir un string en date : https://www.php.net/manual/fr/datetime.createfromformat.php

2. ajouter des mois à une date : https://www.php.net/manual/fr/function.date-add.php

3. comparer les dates : on va comparer les timestamp, il faut donc récupérer celui que l'on vient de calculer : $timestamp = mktime(heures, minutes, secondes, mois, jour, année);
0
boss183 Messages postés 181 Date d'inscription lundi 7 janvier 2008 Statut Membre Dernière intervention 7 octobre 2011 17
Modifié par boss183 le 20/05/2011 à 09:51
Voici la solution :

$datedeb = '2011-04-18'; // Date de début, qui provient de la base 
$duree = 6; // Durée du contrat en mois 

// Conversion de la date de début en unix timestamp 
list($y,$m,$d) = explode('-', $datedeb); 
$utdb = mktime(12,0,0,$m,$d,$y); 

// Calcul de la fin du contrat: 
$utdf = strtotime("+".$duree." months", $utdb); 

// On prend la date du jour à 12h, pour être dans le même contexte horaire que le contrat: 
$now = mktime(12, 0, 0, date('m'), date('d'), date('Y')); 

// Comparaison des dates: 
if (strtotime("+2 months", $now) > $utdf) 
{ 
echo "le contrat va bientot se terminer"; 
} 
else 
{ 
echo "le contrat ne se termine pas bientôt"; 
} 
0