Tutoriel PHP : combo DateTime / DateInterval / DatePeriod

Dans cet article nous allons voir un exemple d’utilisation très concret des classes PHP DateTime, DateInterval et DatePeriod. L’utilisation combinée de ces classes permet de réaliser des opérations complexes sur les dates avec un minimum de code et surtout avec un code compréhensible.

A noter que PHP 5.3 au minimum est nécessaire pour exécuter le code de ce tutoriel.

Déterminer tous les premier jours du mois entre deux dates

Rentrons donc dans le vif du sujet, au travers de cet exemple nous allons voir comment déterminer la date correspondant au premier jour du mois d’une période donnée. Autrement dit, sur une période démarrant sur la date du jour et terminant un an plus tard, je désire des objets DateTime initialisés sur le premier jour de chaque mois étant compris dans cette période.

// Initialisation d'un DateTime sur la date du jour pour la borne inférieure de la période
$begin = new DateTime(date('Y-m-d'));
		
// Création d'un DateTime sur la date du jour pour la borne supérieure de la période
$end = new DateTime(date('Y-m-d'));
		
// Ajout d'un an (P1Y : Plus 1 Year) pour initialiser correctement la borne supérieur de la période
$end->add(new DateInterval('P1Y'));

// Création d'un intervale de temps correspondant au "premier jour du mois d'après"
$interval = DateInterval::createFromDateString('first day of next month');
		
// Calcul de la période comprise entre la borne inférieure et la borne supérieure cadancée sur mon intervalle de temps (a noter que la date de départ est exclue)
$period = new DatePeriod($begin, $interval, $end, DatePeriod::EXCLUDE_START_DATE);

// Parcours de ma période et affichage de la date correspondante
foreach($period as $dt ) {

	echo $dt->format( "l Y-m-d H:i:s" ) . '
';

}

Et voici le résultat de l’exécution du code ci-dessus :

Monday 2013-07-01 00:00:00
Thursday 2013-08-01 00:00:00
Sunday 2013-09-01 00:00:00
Tuesday 2013-10-01 00:00:00
Friday 2013-11-01 00:00:00
Sunday 2013-12-01 00:00:00
Wednesday 2014-01-01 00:00:00
Saturday 2014-02-01 00:00:00
Saturday 2014-03-01 00:00:00
Tuesday 2014-04-01 00:00:00
Thursday 2014-05-01 00:00:00
Sunday 2014-06-01 00:00:00

Nous constatons bien que chaque itération de la boucle foreach positionne un DateTime sur le premier jour du mois pour la période donnée.

C’est tout ! En espérant que ce tutoriel vous soit bénéfique pour la compréhension des DateTime en PHP 😉

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Nos partenaires

PrestaShop

PrestaShop nous fait confiance en nous délivrant la certification Expert qui démontre notre expertise concernant leur logiciel e-commerce. Nous avons également obtenu deux certifications officielles PrestaShop Fullstack Developer.

PayPlug

PayPlug est la solution de paiement française qui simplifie le paiement pour l’ensemble des TPE et PME de l'e-commerce, aussi bien en ligne qu’en magasin.

Klaviyo

Klaviyo, leader mondial du marketing automation, propose une solution complète qui s'interface avec vos canaux de vente.