DateTime::modify

date_modify

Alters the timestamp

&reftitle.description;

&style.oop;

public `DateTime` `DateTime::modify` `string` `modifier`

&style.procedural;

``DateTime``false```date_modify` `DateTime` `object` `string` `modifier`

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

&reftitle.parameters;
&date.datetime.description.modified;

`modifier`

- &date.formats.parameter;

&reftitle.returnvalues;

Returns `DateTime` on success. &return.falseforfailure.style.procedural;

&reftitle.errors;

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

&reftitle.changelog;

&Version; | &Description;
8.3.0 | `DateTime::modify` now throws DateMalformedStringException if an invalid string is passed. Previously, it returned `false`, and a warning was emitted. `date_modify` has not been changed.

&reftitle.examples;

### `DateTime::modify` example

&style.oop;

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

&style.procedural;

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

&examples.outputs;

    2006-12-13

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

&example.outputs;

    2001-01-31
    2001-03-03

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

&example.outputs;

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

&reftitle.seealso;

- `strtotime`
- `DateTimeImmutable::modify`
- `DateTime::add`
- `DateTime::sub`
- `DateTime::setDate`
- `DateTime::setISODate`
- `DateTime::setTime`
- `DateTime::setTimestamp`