Travailler avec les dates et l'heure en PHP : de A à Z
\n\nTravailler avec les dates et l'heure est l'une des tâches les plus courantes en développement web. Qu'il s'agisse d'afficher la date de publication, de calculer l'âge d'un utilisateur, de journaliser des événements ou de créer un calendrier, PHP offre une boîte à outils puissante et flexible. Dans cet article, nous aborderons tous les aspects : des fonctions simples à l'approche orientée objet avec la classe DateTime, en passant par les fuseaux horaires et des exemples pratiques.
Fonctions de base : date() et time()
\n\nL'ensemble de fonctions de base pour travailler avec les dates comprend time() et date(). La fonction time() renvoie le timestamp Unix actuel (nombre de secondes écoulées depuis le 1er janvier 1970). La fonction date() formate ce timestamp dans un format lisible par l'homme.
Obtenir la date et l'heure actuelles
\nLa façon la plus simple d'afficher la date actuelle :
\n<?php\necho date('Y-m-d H:i:s'); // 2025-04-10 15:30:45\n?>\n\nFormatage avec date()
\nLa fonction date() accepte deux paramètres : le format et un timestamp optionnel. Les caractères de formatage les plus courants :
- \n
d— jour du mois (01–31) \n m— mois (01–12) \n Y— année sur 4 chiffres \n H— heures au format 24 heures (00–23) \n i— minutes (00–59) \n s— secondes (00–59) \n
Exemple d'affichage avec du texte en français :
\n<?php\necho 'Nous sommes le ' . date('d/m/Y') . ' et il est ' . date('H:i');\n// Nous sommes le 10/04/2025 et il est 15:30\n?>\n\nLa classe DateTime : approche orientée objet
\nPour les opérations complexes, il est recommandé d'utiliser la classe DateTime. Elle est intuitive, prend en charge les fuseaux horaires et simplifie les manipulations de dates.
Création d'un objet DateTime
\nOn peut créer un objet de différentes manières :
\n<?php\n// Date et heure actuelles\n$now = new DateTime();\necho $now->format('Y-m-d H:i:s'); // 2025-04-10 15:30:45\n\n// Date spécifique\n$date = new DateTime('2025-12-31 23:59:59');\necho $date->format('d/m/Y'); // 31/12/2025\n\n// Avec un format relatif\n$nextWeek = new DateTime('+1 week');\necho $nextWeek->format('Y-m-d');\n?>\n\nModification de la date : modify()
\nLa méthode modify() permet d'ajouter ou de soustraire facilement des intervalles :
<?php\n$date = new DateTime('2025-04-10');\n$date->modify('+10 days');\necho $date->format('d/m/Y'); // 20/04/2025\n\n$date->modify('-1 month');\necho $date->format('d/m/Y'); // 20/03/2025\n?>\n\nTravailler avec les fuseaux horaires
\nIgnorer les fuseaux horaires est une erreur fréquente. PHP propose deux façons de les gérer : globalement avec date_default_timezone_set() et localement avec l'objet DateTimeZone.
Configuration globale
\nDéfinissez le fuseau horaire au début du script :
\n<?php\ndate_default_timezone_set('Europe/Paris');\necho date('H:i'); // Heure de Paris\n?>\n\nConfiguration locale pour DateTime
\nChaque objet DateTime peut avoir son propre fuseau horaire :
<?php\n$timezone = new DateTimeZone('Asia/Vladivostok');\n$date = new DateTime('now', $timezone);\necho $date->format('H:i'); // Heure à Vladivostok\n\n// Changement de fuseau pour un objet existant\n$date->setTimezone(new DateTimeZone('Europe/Paris'));\necho $date->format('H:i'); // Heure convertie\n?>\n\nDifférence entre dates : DateInterval
\nLa classe DateInterval et la méthode diff() permettent de calculer la différence entre deux dates.
Calcul de la différence
\n<?php\n$start = new DateTime('2025-01-01');\n$end = new DateTime('2025-12-31');\n$interval = $start->diff($end);\n\necho $interval->days; // 364 (nombre