Calculer le nombre de mois entre deux dates en PHP
Publié le 15/06/2022 • Actualisé le 15/06/2022
Dans ce bout de code, nous voyons comment calculer le nombre de mois entre deux dates en PHP. Ici, on ne prend pas du tout en compte les jours. Par exemple, c'est utile pour vérifier quand une carte bleue expire (une carte bleue est valide jusqu'au dernier jour du mois de sa date d'expiration). Le premier exemple utilise uniquement PHP, et le second utilise la librairie de dates Carbon. Il peut être complexe de faire les calculs de date ; je préfère généralement m'appuyer sur une librairie existante. Comme vous pouvez le voir, ça rend aussi le code bien plus concis et lisible.
<?php
declare(strict_types=1);
namespace App\Controller\Snippet;
use Carbon\Carbon;
/**
* J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
* Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
* ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
* Les services sont injectés dans le constructeur du contrôleur principal.
*/
trait Snippet204Trait
{
public function snippet204(): void
{
// PHP
$date1 = new \DateTime('2022-06-15');
$date2 = new \DateTime('2022-07-01');
$date3 = new \DateTime('now');
$year1 = (int) $date1->format('Y');
$year2 = (int) $date2->format('Y');
$year3 = (int) $date3->format('Y');
$month1 = (int) $date1->format('m');
$month2 = (int) $date2->format('m');
$month3 = (int) $date3->format('m');
$diff2 = (($year2 - $year1) * 12) + ($month2 - $month1);
$diff3 = (($year3 - $year1) * 12) + ($month3 - $month1);
echo \sprintf('Diff in month from %s to %s: ', $date1->format('Y-m'), $date2->format('Y-m')).$diff2.PHP_EOL;
echo \sprintf('Diff in month from %s to now: ', $date1->format('Y-m')).$diff3.PHP_EOL.PHP_EOL;
// Carbon
$date4 = new Carbon('2022-06-15');
$date5 = new Carbon('2022-07-01');
$date6 = Carbon::now();
$diff5 = (($date5->year - $date4->year) * 12) + ($date5->month - $date4->month);
$diff6 = (($date6->year - $date4->year) * 12) + ($date6->month - $date4->month);
echo \sprintf('Diff in month from %s to %s: ', $date4->format('Y-m'), $date5->format('Y-m')).$diff5.PHP_EOL;
echo \sprintf('Diff in month from %s to now: ', $date4->format('Y-m')).$diff6.PHP_EOL;
// That's it! 😁
}
}
Exécuter le snippet Plus sur Stackoverflow Lire la doc Plus sur le web Snippet aléatoire
A vous de jouer !
Ces articles vous ont été utiles ? Vous pouvez m'aider à votre tour de plusieurs manières : (cliquez sur le lien "reply" dans à droite pour me contacter )
- Me remonter des erreurs ou typos.
- Me remonter des choses qui pourraient être améliorées.
- Aimez et repostez !
- Suivez moi sur Bluesky 🦋
- Inscrivez-vous au flux RSS.
- Cliquez sur les boutons Plus sur Stackoverflow pour me faire gagner des badges "annonceur" 🏅.
Merci et à très bientôt sur Strangebuzz ! 😉
