====== Dates / Heures ======
===== Initialisation de DateTime =====
Doc: [[https://www.php.net/manual/fr/datetime.formats.relative.php]]
Date du jour :
$d = new \DateTime('today');
1er jour du mois en cours :
$d = new \DateTime('first day of this month');
1er jour du mois dernier :
$d = new \DateTime('first day of last month');
===== Jour de fin d'un mois =====
$mois = 2;
$annee = 2020;
$d = new \DateTime();
$d->setDate($annee, $mois, 1); // Depuis le 1er du mois spécifié
$d->add(new \DateInterval('P1M')); // Avancer d'1 mois
$d->sub(new \DateInterval('P1D')); // Reculer d'1 jour
echo "La fin de mois pour {$month}/{$year} est {$d->format('d/m/Y')}.";
Résultat :
La fin de mois pour 2/2020 est 29/02/2020.
====== Conversion de DateTime en chaîne ======
Doc : [[https://www.php.net/manual/fr/datetime.format.php|DateTime::format]]
====== Conversion de chaîne en DateTime ======
Doc : [[https://www.php.net/manual/fr/datetime.createfromformat.php|DateTime::createFromFormat]]
Créer un objet DateTime depuis une chaîne, en spécifiant le format à utiliser :
$dateStr = " 22/04/1971 ";
$dateObj = \DateTime::createFromFormat('!d/m/Y', trim($dateStr));
Avec un format ISO :
$dateStr = "2020-04-06T00:00:00+02:00";
$dateObj = \DateTime::createFromFormat("Y-m-d\TH:i:sT", $dateStr);
Logs d'Apache avec les mois en lettres :
$dateStr = "24/May/2020:11:16:07 +0200";
$dateObj = \DateTime::createFromFormat("d/M/Y:H:i:s T", $dateStr);