Comparaison de dates

Comparaison de dates - PHP - Programmation

Marsh Posté le 19-05-2011 à 15:54:31    

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


Message édité par boss183 le 19-05-2011 à 16:17:21
Reply

Marsh Posté le 19-05-2011 à 15:54:31   

Reply

Marsh Posté le 20-05-2011 à 02:23:49    

Le plus simple pour moi pour additionner des dates, est de tout convertir en timestamp.
 
Plus d'info la : http://php.net/manual/fr/function.time.php

Reply

Marsh Posté le 20-05-2011 à 09:47:19    

Voici la solution :
 

Code :
  1. $datedeb = '2011-04-18'; // Date de début, qui provient de la base
  2. $duree = 6; // Durée du contrat en mois
  3. // Conversion de la date de début en unix timestamp
  4. list($y,$m,$d) = explode('-', $datedeb);
  5. $utdb = mktime(12,0,0,$m,$d,$y);
  6. // Calcul de la fin du contrat:
  7. $utdf = strtotime("+".$duree." months", $utdb);
  8. // On prend la date du jour à 12h, pour être dans le même contexte horaire que le contrat:
  9. $now = mktime(12, 0, 0, date('m'), date('d'), date('Y'));
  10. // Comparaison des dates:
  11. if (strtotime("+2 months", $now) > $utdf)
  12. {
  13. echo "le contrat va bientot se terminer";
  14. }
  15. else
  16. {
  17. echo "le contrat ne se termine pas bientôt";
  18. }

Reply

Marsh Posté le 20-05-2011 à 09:48:16    

$Date= 'yyyy-mm-dd'; // ex : '2011-05-20'
$Timestamp = strtotime($Date);
 
Le timstamp est un entier qui contient la date + l'heure (si pas d'heure précisée, c'est 00:00:00 qui est pris. Après, tu peux effectuer les opérations que tu veux.
 
Regarde aussi la fonction date qui permet de manipuler les dates (afficher le dernier jour d'un mois, par ex).
 
$Date= date('Y-m-d'); // date du jour
echo date('t/m/Y', strtotime($Date));  // affiche le dernier jour du mois courant.
 
strtotime permet de faire des calculs sur les dates :
$Date= date('Y-m-d'); // date du jour
date('t/m/Y', strtotime("$Date +2 months" )); // ajoute 2 mois à la date courante


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed