133 votes

Comment comparer deux dates en php

Comment comparer deux dates en php si les dates sont au format '03_01_12' et '31_12_11' .

J'utilise ce code :

 $date1=date('d_m_y');
$date2='31_12_11';
if(strtotime($date1) < strtotime($date2))
   echo '1 is small ='.strtotime($date1).','.$date1;
else
   echo '2 is small ='.strtotime($date2).','.$date2;

Mais ça ne marche pas..

47voto

nevvermind Points 1083

Utilisation de DateTime::createFromFormat :

 $format = "d_m_y";
$date1  = \DateTime::createFromFormat($format, "03_01_12");
$date2  = \DateTime::createFromFormat($format, "31_12_11");

var_dump($date1 > $date2);

46voto

dkulkarni Points 334

Vous devrez vous assurer que vos dates sont des objets date valides.

Essaye ça:

 $date1=date('d/m/y');
$tempArr=explode('_', '31_12_11');
$date2 = date("d/m/y", mktime(0, 0, 0, $tempArr[1], $tempArr[0], $tempArr[2]));

Vous pouvez ensuite effectuer la strtotime() pour obtenir la différence.

31voto

wardha-Web Points 473

Ne répondant pas au problème réel de l'OP, mais répondant uniquement au titre. Puisqu'il s'agit du meilleur résultat pour "comparer les dates en php".

Objets Datetime assez simples à utiliser ( php >= 5.3.0 ) et les comparer directement

 $date1 = new DateTime("2009-10-11");
$date2 = new DateTime("tomorrow"); // Can use date/string just like strtotime.
var_dump($date1 < $date2);

20voto

Muthu Krishnan Points 462

Dans cette condition si, les crochets ne sont pas bien formés

  if(strtotime($date1))<strtotime($date2)))

S'il vous plaît changer par ceci

 if(strtotime($date1) < strtotime($date2))

14voto

Rishabh Points 376

La fonction date_diff() renvoie la différence entre deux objets DateTime.

Si la première date est antérieure à la deuxième date, un nombre positif de jours sera renvoyé ; sinon un nombre de jours négatif :

 <?php
$date1=date_create("2013-03-15");
$date2=date_create("2013-12-12");
$diff=date_diff($date1,$date2);
echo $diff->format("%R%a days");
?>

la sortie sera "+272 jours" ;

en changeant $date1 = "2014-03-15"

  <?php
    $date1=date_create("2014-03-15");
    $date2=date_create("2013-12-12");
    $diff=date_diff($date1,$date2);
    echo $diff->format("%R%a days");
    ?>

La sortie sera "-93 jours"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X