===== Manipulation de date (objet Datetime) =====
**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 !