Ajouter un jour à une date en PHP
Cet article montre comment ajouter un jour à une date en PHP.
1. Utilisation DateTime::modify()
fonction
La DateTime::modify() fonction modifie l'horodatage d'un DateTime
objet en ajoutant ou en soustrayant selon le format de date/heure spécifié. Pour avancer une date au jour suivant, vous pouvez utiliser le format de date relative "+1 day"
.
1 2 3 4 5 6 7 8 |
<?php $date = new DateTime("2017/12/25 15:30:00"); $date->modify("+1 day"); $result = $date->format("l, d-M-y H:i:s"); var_dump($result); // string(27) "Mardi, 26-Dec-17 15:30:00" ?> |
Si vous préférez les fonctions de style procédural, vous pouvez utiliser les date_modify() fonction, qui est un alias de DateTime::modify()
.
1 2 3 4 5 6 7 8 |
<?php $date = new DateTime("2017/12/25 15:30:00"); date_modify($date, "+1 day"); $result = date_format($date, "l, d-M-y H:i:s"); var_dump($result); // string(27) "Mardi, 26-Dec-17 15:30:00" ?> |
Vous pouvez facilement étendre la solution pour ajouter un nombre donné de jours à une date. Prenons l'exemple suivant, qui crée une méthode d'extension pour cette tâche simple :
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php function addDays($date, $days, $format="l, d-M-y H:i:s") { $date = new DateTime($date); $date->modify("+$days days"); return $date->format($format); } $date = "2017/12/25 15:30:00"; $days = 10; $result = addDays($date, $days); var_dump($result); // "string(28) "Jeudi 04-Jan-18 15:30:00" ?> |
2. Utilisation DateTime::add()
fonction
Vous pouvez également modifier un DateTime
objet avec le DateTime::add() fonction, qui ajoute le nombre de jours, de mois, d'années, d'heures, de minutes et de secondes selon le DateInterval
objet. La DateInterval le constructeur s'attend à un duration
paramètre pour la spécification de l'intervalle. Ce format commence par P
, qui signifie période, et est suivi d'une période de durée et d'un indicateur de période. Vous pouvez utiliser l'indicateur de période D
pour ajouter ou supprimer des jours, comme spécifié par la période de durée. Par conséquent, un jour est P1D
.
1 2 3 4 5 6 7 8 |
<?php $date = new DateTime("2017/12/25 15:30:00"); $date = $date->add(new DateInterval("P1D")); $result = $date->format("l, d-M-y H:i:s"); var_dump($result); // string(27) "Mardi, 26-Dec-17 15:30:00" ?> |
Vous pouvez également utiliser la fonction de style procédural date_add(), qui est un alias de la fonction de style orienté objet DateTime::add()
.
1 2 3 4 5 6 7 8 |
<?php $date = date_create("2017/12/25 15:30:00"); $date = date_add($date, new DateInterval("P1D")); $result = date_format($date, "l, d-M-y H:i:s"); var_dump($result); // string(27) "Mardi, 26-Dec-17 15:30:00" ?> |
Vous pouvez même écrire votre propre méthode utilitaire pour ajouter n'importe quel nombre de jours à la date donnée.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php function addDays($date, $days, $format="l, d-M-y H:i:s") { $date = new DateTime($date); $date = $date->add(new DateInterval("P{$days}D")); return $date->format($format); } $date = "2017/12/25 15:30:00"; $days = 10; $result = addDays($date, $days); var_dump($result); // "string(28) "Jeudi 04-Jan-18 15:30:00" ?> |
3. Utilisation DateTime
constructeur
Vous pouvez même utiliser le DateTime
constructeur pour ajouter un jour à une date donnée. Le DateTime
constructeur renvoie un nouveau DateTime
objet initialisé à partir de la chaîne date/heure spécifiée. L'idée est d'utiliser la description textuelle anglaise datetime de "+1 day"
pour avancer la date donnée d'une unité. Il peut être utilisé comme indiqué ci-dessous :
1 2 3 4 5 6 7 8 |
<?php $str = "2017/12/25 15:30:00"; $dt = new DateTime("$str +1 day"); $result = $dt->format("l, d-M-y H:i:s"); var_dump($result); // string(27) "Mardi, 26-Dec-17 15:30:00" ?> |
De plus, si vous avez juste besoin d'ajouter un jour à la date actuelle, vous pouvez directement passer le format de date relative "+1 day"
à DateTime
constructeur, comme indiqué ci-dessous :
1 2 3 4 5 6 |
<?php $date = new DateTime("+1 day"); $result = $date->format("l, d-M-y H:i:s"); var_dump($result); ?> |
4. Utilisation strtotime()
fonction
Cela peut être facilement fait en utilisant le strtotime() fonction, qui convertit la chaîne de date donnée en un horodatage Unix. Vous pouvez utiliser la description textuelle de la date et de l'heure en anglais de "+1 day"
pour avancer la date donnée d'une unité.
1 2 3 4 5 6 7 |
<?php $str = "2017/12/25 15:30:00"; $result = date("l, d-M-y H:i:s", strtotime("$str +1 day")); var_dump($result); // string(27) "Mardi, 26-Dec-17 15:30:00" ?> |
Voici une version générique du code ci-dessus qui crée une méthode utilitaire pour ajouter n'importe quel nombre de jours à la date donnée.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php function addDays($date, $days, $format="l, d-M-y H:i:s") { $date = strtotime("$date +$days day"); return date($format, $date); } $date = "2017/12/25 15:30:00"; $days = 10; $result = addDays($date, $days); var_dump($result); // "string(28) "Jeudi 04-Jan-18 15:30:00" ?> |
Enfin, si vous voulez juste trouver la date de demain, vous pouvez simplement passer "+1 day"
au strtotime()
fonction.
1 2 3 4 5 |
<?php $timestamp = strtotime("+1 day"); $result = Date("l, d-M-y H:i:s", $timestamp); var_dump($result); ?> |
C'est tout ce qu'il y a à ajouter un jour à une date en PHP.