PHP 8.1.28 Released!

DateTime::modify

date_modify

(PHP 5 >= 5.2.0, PHP 7, PHP 8)

DateTime::modify -- date_modifyModifie le timestamp

Description

Style orienté objet

public DateTime::modify(string $modifier): DateTime|false

Style procédural

Modifie le timestamp d'un objet DateTime en l'incrémentant ou le décrémentant dans un format acceptable par strtotime().

Liste de paramètres

object

Style procédural uniquement : Un objet DateTime retourné par la fonction date_create(). Cette fonction modifie cet objet.

modifier

Une chaîne date/heure. Les formats valides sont expliqués dans la documentation sur les formats Date et Heure.

Valeurs de retour

Retourne l'objet modifié DateTime pour chainer les méthodes ou false si une erreur survient.

Erreurs / Exceptions

API Orienté Objet uniquement : Si une chaîne de date ou de temps invalide est fournie, une DateMalformedStringException est lancé.

Historique

Version Description
8.3.0 Lance désormais une DateMalformedStringException avec DateTime::modify() si une chaîne invalide est fourni, au lieu d'un avertissement. date_modify() n'a pas été modifié.

Exemples

Exemple #1 Exemple avec DateTime::modify()

Style orienté objet

<?php
$date
= new DateTime('2006-12-12');
$date->modify('+1 day');
echo
$date->format('Y-m-d');
?>

Style procédural

<?php
$date
= date_create('2006-12-12');
date_modify($date, '+1 day');
echo
date_format($date, 'Y-m-d');
?>

Les exemples ci-dessus vont afficher :

2006-12-13

Exemple #2 Méfiez-vous lors de l'ajout ou la soustraction de mois

<?php
$date
= new DateTime('2000-12-31');

$date->modify('+1 month');
echo
$date->format('Y-m-d') . "\n";

$date->modify('+1 month');
echo
$date->format('Y-m-d') . "\n";
?>

L'exemple ci-dessus va afficher :

2001-01-31
2001-03-03

Exemple #3 Tous les formats de date et d'heure sont pris en charge

<?php
$date
= new DateTime('2020-12-31');

$date->modify('1er juillet 2023');
echo
$date->format('Y-m-d H:i') . "\n";

$date->modify('l prochain');
echo
$date->format('Y-m-d H:i') . "\n";

$date->modify('17:30');
echo
$date->format('Y-m-d H:i') . "\n";
?>

L'exemple ci-dessus va afficher :

2023-07-01 00:00
2023-07-03 00:00
2023-07-03 17:30

Voir aussi

add a note

User Contributed Notes 1 note

up
0
php_net at striderweb dot com
16 minutes ago
You have to be a bit careful with variables here. If for example you want to add a variable amount of minutes you might use `->modify("+$min"). This will not work out if `$min` is a negative number, because modify will see the "+" and ignore the "-". If `$min` equals -10, modify in this example will add ten minutes, not subtract!

What is happening is if the modify string has two operations, the first will be obeyed and later ones will be ignored.

So "+-10 minutes" will add ten minutes, even though you might expect it to add the negative number. Similarly "--10 minutes" will subtract ten minutes, despite the apparent logic of subtracting a negative number.
To Top