Création d'une date :
$date = new \Datetime(); $date = new \Datetime('now') $date = new \Datetime('2012-12-25'); $date = new \Datetime('2012-12-25 05:59:59');
Duplication d'une date :
Attention car une simple égalité entre deux dates ne fera qu'une copie similaire à un passage d'adresse à une fonction en C : C'est à dire qu'en cas de modification de la première, la seconde sera aussi modifiée. Vous ne crée ainsi qu'une sorte de raccourci vers la 1ere date :
$dateA = new \Datetime('2020-01-05'); $dateB = $dateA; $dateA->sub( new \DateInterval('P4D'); //retrait de 4 jours $dateA->format('d/m/y'); // 01/01/2020 $dateB->format('d/m/y'); // 01/01/2020 car dateB ne sera toujours qu'un duplicata de dateA //de la même manière si on réalise une opération sur dateB, dateA sera affecté : $dateB->add( new \DateInterval('P10D'); //ajout de 10 jours $dateB->format('d/m/y'); // 10/01/2020 $dateA->format('d/m/y'); // 10/01/2020
Ainsi, pour réaliser une vrai copie d'une date, il faut donc faire appel à l'outil clone afin de clone l'objet Datetime :
$dateA = new \Datetime('2020-01-05'); $dateB = clone $dateA; $dateA->sub( new \DateInterval('P4D'); //retrait de 4 jours $dateA->format('d/m/y'); // 01/01/2020 $dateB->format('d/m/y'); // 05/01/2020 car dateB est distinct de dateA //de la même manière si on réalise une opération sur dateB, dateA ne sera pas affecté : $dateB->add( new \DateInterval('P10D'); //ajout de 10 jours $dateB->format('d/m/y'); // 15/01/2020 $dateA->format('d/m/y'); // 01/01/2020
Comparaison :
La comparaison est très simple et s'utilise comme s'il s'agissait de nombre standard :
if ($dateA < $dateB){...} if ($dateA > $dateB){...} if ($dateA <= $dateB){...} if ($dateA >= $dateB){...}
Remarque : Attention à l'égalité parfaite car cela signifie que tout doit être égale : La date, l'heure et les millisecondes associées !