W3docs

Manipulation des dates et heures en PHP

Découvrez comment manipuler les dates et heures en PHP avec DateTime::add(), DateInterval et d'autres fonctions essentielles.

PHP est un langage de programmation côté serveur très populaire, largement utilisé pour créer des pages web dynamiques. L'une de ses fonctionnalités les plus importantes est sa capacité à manipuler les dates et les heures. Dans cet article, nous allons explorer les différentes fonctions de manipulation des dates et heures disponibles en PHP et comment elles peuvent simplifier votre processus de développement.

Comprendre les dates et heures en PHP

Avant de plonger dans les différentes fonctions disponibles en PHP pour manipuler les dates et heures, commençons par comprendre comment PHP gère les dates et les heures. En PHP, les dates et les heures sont représentées sous forme de string. Le format le plus courant pour représenter une date est YYYY-MM-DD, tandis que le format le plus courant pour représenter une heure est HH:MM:SS.

PHP fournit également une fonction intégrée appelée date() qui peut être utilisée pour formater les dates et les heures de différentes manières. La fonction date() prend deux arguments : une string de format et un horodatage. La string de format spécifie le format souhaité de la date et de l'heure, tandis que l'horodatage indique le moment à formater.

Ajouter du temps à des dates en PHP

La fonction date() est principalement utilisée pour formater des horodatages en string lisibles. Pour ajouter ou soustraire des intervalles de temps à une date, PHP fournit la classe DateTime ainsi que sa méthode add(). La fonction procédurale date_add() (qui donne son nom à ce chapitre) est un alias hérité de DateTime::add(), mais l'approche orientée objet est recommandée.

Voici un exemple montrant comment ajouter un jour à une date donnée avec DateTime::add() :

php— editable, runs on the server

Dans cet exemple, nous créons un object DateTime à partir de la string de date initiale. Nous utilisons ensuite la méthode add() avec un object DateInterval (P1D représente une période d'1 jour) pour modifier la date. Enfin, nous formatons et affichons la date mise à jour.

Comprendre le format DateInterval

La string passée à DateInterval suit le format de durée ISO 8601. Elle commence toujours par la lettre P (pour « période »). Les parties relatives aux dates viennent en premier, puis un séparateur T facultatif introduit les parties relatives aux heures :

CodeSignification
Yannées
Mmois (avant T)
Djours
Tséparateur avant les parties horaires
Hheures
Mminutes (après T)
Ssecondes

Ainsi, P1Y2M10DT2H30M signifie « 1 an, 2 mois, 10 jours, 2 heures et 30 minutes ». Notez que M signifie mois avant le T et minutes après — c'est une source d'erreurs fréquente.

<?php

$date = new DateTime('2022-01-01 00:00:00');
$date->add(new DateInterval('P1Y2M10DT2H30M'));
echo $date->format('Y-m-d H:i:s');
?>

add() modifie l'objet original

DateTime::add() modifie l'object en place plutôt que d'en retourner un nouveau. Si vous avez besoin de conserver la date originale, utilisez DateTimeImmutable, qui retourne un nouvel object à chaque opération :

<?php

$start = new DateTimeImmutable('2022-03-02');
$next  = $start->add(new DateInterval('P1D'));

echo $start->format('Y-m-d'), "\n"; // unchanged
echo $next->format('Y-m-d'), "\n";  // one day later
?>

Soustraire du temps à des dates

Pour reculer une date, utilisez la méthode DateTime::sub() avec un DateInterval. Elle fonctionne exactement comme add() mais en sens inverse :

<?php

$date = new DateTime('2022-03-02');
$date->sub(new DateInterval('P1M')); // subtract one month
echo $date->format('Y-m-d');
?>

Mesurer la différence entre deux dates

Pour calculer l'écart entre deux dates, utilisez DateTime::diff() (alias procédural date_diff()). Elle retourne un DateInterval que vous pouvez formater :

<?php

$a = new DateTime('2022-01-01');
$b = new DateTime('2022-03-02');
$diff = $a->diff($b);
echo $diff->format('%a days'); // total days between the two dates
?>

Autres fonctions de manipulation des dates et heures en PHP

En plus de DateTime::add(), PHP fournit plusieurs autres fonctions pour travailler avec les dates et les heures. Parmi celles-ci :

  • strtotime() : Convertit une description textuelle de date/heure en anglais en horodatage Unix
  • time() : Retourne l'horodatage Unix actuel
  • mktime() : Retourne l'horodatage Unix pour une date et une heure données
  • date_modify() : Modifie un object DateTime en utilisant un format relatif textuel (par ex. +1 day)
  • date_sub() : Alias procédural hérité de DateTime::sub()
  • date_diff() : Calcule la différence entre deux objets DateTime

Utiliser ces fonctions conjointement avec les méthodes de DateTime vous permettra de gérer efficacement diverses opérations sur les dates et les heures.

Conclusion

Dans cet article, nous avons exploré comment manipuler les dates et les heures en PHP. Nous avons précisé que la fonction date() est utilisée pour le formatage, tandis que l'ajout ou la soustraction de temps est mieux géré avec la méthode DateTime::add(). Nous avons également passé en revue d'autres fonctions utiles comme strtotime(), mktime() et date_diff(), et noté que date_add() est un alias procédural hérité. Utiliser correctement ces outils vous aidera à gérer les opérations de date et d'heure de manière fiable dans vos applications PHP.

Pratique

Pratique
Que fait la fonction date_add() en PHP ?
Que fait la fonction date_add() en PHP ?
Was this page helpful?