60 votes

Vérifiez si deux objets datetime PHP sont définis sur la même date (en ignorant l'heure)

Je veux juste comparer 2 objets datetime pour voir s'ils sont définis à la même date, mais je ne me soucie pas de la composante temporelle de l'objet. Pour le moment, j'utilise la commande date_format pour extraire des chaînes comme 'Ymd' à comparer, mais cela semble gênant.

 $firstDate = date_format($firstDateTimeObj, 'Y-m-d');
$secondDate = date_format($secondDateTimeObj, 'Y-m-d');

if !($firstDate == $secondDate) {

// some code
}

Je suis nouveau en programmation et en PHP, donc tous les pointeurs sont appréciés.

69voto

Evert Points 17625

Utilisez la syntaxe objet !

 $firstDate = $firstDateTimeObj->format('Y-m-d');
$secondDate = $secondDateTimeObj->format('Y-m-d');

Vous étiez très proche de votre expression si, mais le ! L'opérateur doit être entre parenthèses.

 if (!($firstDate == $secondDate))

Cela peut aussi s'exprimer comme

 if ($firstDate != $secondDate)

11voto

Wesley van Opdorp Points 8536

Je pense que votre approche est bonne, mais je supprimerais les - car ils n'ajoutent rien.

 $firstDate = date_format($firstDateTimeObj, 'Ymd');
$secondDate = date_format($secondDateTimeObj, 'Ymd');

if ($firstDate != $secondDate) {
    // some code
}

11voto

Paper-bat Points 423

À la recherche d'une réponse avec le même problème. Je suis arrivé à cette solution qui me convient mieux, puis j'utilise diff ou d'autres choses.

Le problème principal était d'ignorer les parties de l'heure de l'objet DateTime, définissez-le simplement sur une heure, par exemple à 12:00:00

 $firstDateTimeObj->setTime(12, 0, 0);
$secondDateTimeObj->setTime(12, 0, 0);

// The main problem was checking if different.. but you can use any comparison
if ($firstDateTimeObj != $secondDateTimeObj) {
}

6voto

Cela a très bien fonctionné pour moi.

 $date1=DateTime::createFromFormat('Y-m-d H:i:s', '2014-07-31 07:30:00')->format('Y-m-d');
$date2=DateTime::createFromFormat('Y-m-d H:i:s', '2014-08-01 17:30:00')->format('Y-m-d');
if($date1==$date2){
    echo "==";
}else{
    echo "!=";
}

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