Utiliser la lib Carbon
La gestion des dates peut devenir pénible, peu importe le langage utilisé. Heureusement il existe des librairies comme « Carbon », pour simplifier cette gestion.
Carbon et la gestion des dates
En 1er vous devez installer la lib Carbon :
composer require nesbot/carbon
Vous pouvez sur votre objet Carbon, chaîner les méthodes, pour obtenir le prochain lundi + 14 jours, par exemple :
echo (new Carbon("next monday"))->modify('+14 days');
Ou cumuler des demandes :
Ici le lundi de la semaine prochaine + 5h, +10 minutes et -10 secondes.
Ex : 2021-01-04 05:09:50.
echo (new Carbon("monday next week +5 hours +10 minutes -10 seconds"));
Ou indiquer qu’on désire le 1er jour de Janvier (de cette année) + 7 jours :
(ci-dessous : 2021-01-08 00:00:00)
echo (new Carbon('first day of january this year'))->modify('+7 days');
On peut aussi tester qu’une date réponde à certain(s) critère(s) :
(ci-dessous, qu’une date est bien pour la semaine prochaine)
Cf doc pour d’autres exemples : https://carbon.nesbot.com/docs/#api-comparison
$dt = Carbon::now()->addWeek(1);
if ($dt->isNextWeek()) {
echo "semaine prochaine";
} else {
echo "Pas semaine prochaine";
}
On peut aussi ajouter/soustraire des siècles, années, trimestres, mois, jours, semaines, heures, minutes, secondes, etc … :
$dt = CarbonImmutable::create(2021, 1, 31, 0);
echo $dt->addDays(3)."<br>"; // 2021-02-03 00:00:00
echo $dt->subDays(3); // 2021-01-28 00:00:00
Mais encore
- Calculer la différence entre 2 dates.
- Ajuster la timezone de votre date.
- Changer le format de la date (ex : Y-m-d, d/m/Y, …).
- Utiliser des rendus plus compréhensible (1 mois avant, 5 jours après, il y a 3 semaines, 50 minutes après, …).
- Et bien plus encore.
Source :
- Doc Carbon : https://carbon.nesbot.com/docs/
- Repos GitHub officiel : https://github.com/briannesbitt/carbon
- Exemple d’utilisation de Carbon : https://github.com/eewee/carbon