picture picture
août 13, 2018 PHP 0 Commentaire

Comparer deux dates avec PHP

La question se pose régulièrement pour un développeur, afin de déclencher (ou non) un évènement PHP. Comparer deux dates n'est pas si simple !Comparer deux dates : cette question se pose régulièrement pour un développeur , afin de déclencher (ou non) un évènement. La date que je vais extraire de ma base des données est-elle passée ? Ou à venir ?

Or comparer deux dates au format MySQL (AAAA-mm-jj) ne fonctionne pas toujours selon les mois calendaire (à 2, ou à 1 chiffre ?)…

La solution consiste à ramener les 2 dates en secondes par rapport à une date de référence (1er janvier 1970 par défaut); puis à les comparer. Exemple ici : […]

On utilisera la fonction mktime(), qui retourne le nombre de seconde depuis le 1er janvier 1970. Elle est à argumenter dans cet ordre et au format suivant :

  1. mois avec 2 chiffres de 00 à 12 (n),
  2.  jour avec 2 chiffres de 00 à 31 (j),
  3. année avec 4 chiffres (Y)

…on peut également renseigner éventuellement les formats complémentaires suivants, si nécessaire (sinon laisser juste des zéro simples : cf. ex. ci-dessous):

  1. heures avec 2 chiffres de 0 à 24 (H),
  2. minutes avec 2 chiffres de 00 à 59 (i),
  3. secondes avec 2 chiffres de 00 à 59 (s)

Par exemple, pour comparer la date du 1er avril 2020 et la date d’aujourd’hui, on utilisera la méthode suivante :

1. on encode la date à tester (01/04/2020) :

$dateTest = mktime(0, 0, 0, 04, 01, 2019);
									

2. on encode la date limite qui va déclencher notre action (aujourd’hui) :

$dateLimit = mktime(0, 0, 0, date('n'), date('j'), date('Y'));
									

3. et selon le résultat du comparatif, on déclenche notre action :

if ($dateTest > $dateLimit )
  echo 'trop tard';
else
  echo 'ok';
									

On peut aussi créer une fonction, s’il est nécessaire de comparer deux dates plusieurs fois dans la même application web (à adapter, bien évidemment, à l’action que vous voulez lancer…) :

// les dates sont ici utilisées au format MySQL (YYYY-mm-jj)
function TestDate($date1, $date2) {
$tabloTest = explode('-', $date1);
$dateTest = mktime(0, 0, 0, $tabloTest1], $tabloTest[2], $tabloTest[0]);
$tablolimit = explode('-', $date2);
$dateLimit = mktime(0, 0, 0, $tablolimit[1], $tablolimit[2], $tablolimit[0]);
return ($dateTest > $dateLimit ) ? 'trop tard' : 'ok';
}

// utilisation de la fonction :
echo TestDate($date1, $date2);
									

That’s all folk :mrgreen:

 

 

No Responses to “Comparer deux dates avec PHP”

Commentaire

Name

Mail (ne sera pas publié)

Website

Laisser ces deux champs tels quels :
:D :-) :( :o 8O :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: