Créer des dates facilement

La manière la plus simple pour créer des dates en PHP est d'instancier un objet de la classe DateTime.

$date = new DateTime();
// "2022-12-19 08:33:03.003983"

On peut aussi passer une chaîne comme paramètre à ce constructeur :

// La date et l'heure actuelle ("2022-12-19 08:33:03.003983")
// Valeur par défaut du constructeur
$date = new DateTime("now");

// Ce matin à minuit ("2022-12-19 00:00:00.000000")
$date = new DateTime("midnight");

// Minuit demain ("2022-12-20 00:00:00.000000")
$date = new DateTime("tomorrow");

// Dernier jour du mois ("2022-12-31 00:00:00.000000")
$date = new DateTime("last day of december");

A partir d'un format

On peut créer des dates aussi à partir d'un format que l'on définit.

// 2022-12-21 08:33:03.003983
$date = DateTime::createFromFormat('Y-m-d', '2022-12-21');

On voit ici, que les heures, minutes et secondes sont initialisées avec les valeurs de l'heure courante. Si on souhaite réinitialiser ces valeurs à 0, on peut utiliser !.

  • Une date à minuit ?
// 2022-12-19 00:00:00.000000
$date = DateTime::createFromFormat('!Y-m-d', '2022-12-19');
  • Mais ça marche aussi avec les jours, les mois et les années. Le premier jour du mois ?
// 2022-12-01 00:00:00.000000
$date = DateTime::createFromFormat('!Y-m', '2022-12');
  • Le premier jour de l'année ?
// 2022-12-01 00:00:00.000000
$date = DateTime::createFromFormat('!Y', '2022');
  • Le 1er janvier 1970 🙃?
// 1970-01-01 00:00:00.000000
$date = DateTime::createFromFormat('!', '');

Tu aimerais progresser en PHP ? Mais tu ne sais pas comment t'y prendre ?

S'entraîner pour progresser en PHP

Mon programme "S'entraîner pour progresser en PHP" va bientôt ouvrir ses portes. Il te permettra de recevoir chaque semaine un kata de code directement dans ta boîte mail, ainsi que des aides à la réalisation, des vidéos explicatives, voire des live coding et de la review.

Si tu es intéressé(e), clique sur le bouton ci-dessous pour avoir plus d'informations et t'inscrire afin d'être prévenu(e) de l'ouverture de ce programme.