Travail avec les dates en PHP : bibliothèques et outils
Le travail avec les dates et l'heure est l'une des tâches les plus courantes en développement web. PHP dispose d'une classe intégrée DateTime, mais ses fonctionnalités sont souvent insuffisantes pour des opérations complexes : calcul de la différence de temps, formatage tenant compte de la locale, gestion des fuseaux horaires. Des bibliothèques spécialisées viennent à la rescousse. Dans cet article, nous analyserons les meilleurs outils pour travailler avec les dates en PHP.
1. La classe intégrée DateTime
Avant de passer aux bibliothèques tierces, il convient de rappeler la solution native — la classe DateTime. Elle est disponible en PHP depuis la version 5.2 et offre des fonctionnalités de base :
- Création d'objets date et heure
- Formatage (via
format()) - Modification de la date (via
modify()) - Gestion des fuseaux horaires (
DateTimeZone) - Comparaison de dates
Exemple d'utilisation :
<?php$date = new DateTime('2024-12-31');$date->modify('+1 day');echo $date->format('Y-m-d'); // 2025-01-01?>Cependant, DateTime présente des inconvénients : absence de méthodes pratiques pour travailler avec les intervalles, difficultés avec les chaînages d'appels et prise en charge limitée des formats lisibles par l'homme.
2. Carbon — la bibliothèque la plus populaire
Carbon est une extension de DateTime qui ajoute une API pratique, des chaînages de méthodes et de nombreuses fonctions auxiliaires. Installation via Composer :
composer require nesbot/carbonFonctionnalités clés de Carbon :
- Méthodes lisibles par l'homme :
now(),yesterday(),tomorrow() - Localisation (prise en charge du russe)
- Gestion des intervalles :
diffForHumans() - Modification de la date via chaînage :
->addDays(5)->subMonths(2) - Comparaison :
isWeekend(),isPast(),isFuture()
Exemple avec localisation russe :
<?phprequire 'vendor/autoload.php';use Carbon\\Carbon;
Carbon::setLocale('ru');$date = Carbon::now();echo $date->diffForHumans(); // "только что" ou "3 часа назад"?>Carbon est la norme de facto pour travailler avec les dates dans Laravel et de nombreux autres projets.
3. Chronos — une alternative légère
Chronos de CakePHP est une autre extension de DateTime, mais axée sur la légèreté et les performances. Installation :
composer require cakephp/chronosDifférences par rapport à Carbon :
- Aucune dépendance (sauf PHP)
- Typage plus strict
- Prise en charge des objets immuables (immutable) par défaut
- Moins de méthodes, mais les principales sont présentes
Exemple :
<?phpuse Cake\\Chronos\\Chronos;
$date = Chronos::now();$future = $date->addDays(10);echo $future->format('d.m.Y');?>Chronos est adapté aux projets où la propreté du code et les performances sont importantes, mais où un vaste écosystème n'est pas nécessaire.
4. CarbonImmutable et DateTimeImmutable
Depuis PHP 5.5, la classe DateTimeImmutable est apparue, qui ne modifie pas l'objet d'origine mais en retourne un nouveau. Carbon a un équivalent — CarbonImmutable. Cela évite les mutations accidentelles des données :
<?phpuse Carbon\\CarbonImmutable;
$date = CarbonImmutable::now();$newDate = $date->addDay();echo $date->format('Y-m-d'); // L'original n'a pas changé?>Utilisez les versions immuables si les dates sont transmises entre fonctions ou stockées dans le cache.
5. League\\Period — travail avec les périodes
La bibliothèque Period de The League of Extraordinary Packages est conçue pour travailler avec les intervalles de temps et les péri
Aussi dans la bibliothèque
Configuration des applications Node.js : meilleurs outils et approches
Client Elasticsearch pour PHP : elasticsearch-php — guide complet
ASP.NET Core pour C# (.NET) : guide complet avec exemples
Génération Swagger/OpenAPI pour C# (.NET) : Swashbuckle et NSwag