DateTime::modify

date_modify

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

DateTime::modify -- date_modifyAlters the timestamp

Descrizione

Stile orientato agli oggetti

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

Stile procedurale

Alter the timestamp of a DateTime object by incrementing or decrementing in a format accepted by DateTimeImmutable::__construct().

Elenco dei parametri

oggetto

Solo per lo stile procedurale: Un oggetto DateTime restituito da date_create(). La funzione modifica questo oggetto.

modifier

Una stringa data/ora. I formati validi sono descritti in Formati di Data e Tempo.

Valori restituiti

Restituisce l'oggetto DateTime per il metodo chaining o false in caso di fallimento.

Errori/Eccezioni

Object Orientated API only: If an invalid Date/Time string is passed, DateMalformedStringException is thrown.

Log delle modifiche

Versione Descrizione
8.3.0 Now throws DateMalformedStringException with DateTime::modify() if an invalid string is passed, instead of a warning. date_modify() has not been changed.

Esempi

Example #1 DateTime::modify() example

Stile orientato agli oggetti

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

Stile procedurale

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

I precedenti esempi visualizzeranno:

2006-12-13

Example #2 Beware when adding or subtracting months

<?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";
?>

Il precedente esempio visualizzerà:

2001-01-31
2001-03-03

Example #3 All formats of Date and Time are supported

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

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

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

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

Il precedente esempio visualizzerà:

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

Vedere anche:

add a note

User Contributed Notes 1 note

up
0
php_net at striderweb dot com
1 day 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