DateTime::sub

date_sub

Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object

&reftitle.description;

&style.oop;

public `DateTime` `DateTime::sub` `DateInterval` `interval`

&style.procedural;

`DateTime` `date_sub` `DateTime` `object` `DateInterval` `interval`

Subtracts the specified `DateInterval` object from the specified DateTime object.

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

`interval`

- A `DateInterval` object

&reftitle.returnvalues;

&date.datetime.return.modifiedobjectorfalseforfailure;

&reftitle.examples;

### `DateTime::sub` example

&style.oop;

    <?php
    $date = new DateTime('2000-01-20');
    $date->sub(new DateInterval('P10D'));
    echo $date->format('Y-m-d') . "\n";
    ?>

&style.procedural;

    <?php
    $date = date_create('2000-01-20');
    date_sub($date, date_interval_create_from_date_string('10 days'));
    echo date_format($date, 'Y-m-d');
    ?>

&examples.outputs;

    2000-01-10

### Further `DateTime::sub` examples

    <?php
    $date = new DateTime('2000-01-20');
    $date->sub(new DateInterval('PT10H30S'));
    echo $date->format('Y-m-d H:i:s') . "\n";

    $date = new DateTime('2000-01-20');
    $date->sub(new DateInterval('P7Y5M4DT4H3M2S'));
    echo $date->format('Y-m-d H:i:s') . "\n";
    ?>

&example.outputs;

    2000-01-19 13:59:30
    1992-08-15 19:56:58

### Beware when subtracting months

    <?php
    $date = new DateTime('2001-04-30');
    $interval = new DateInterval('P1M');

    $date->sub($interval);
    echo $date->format('Y-m-d') . "\n";

    $date->sub($interval);
    echo $date->format('Y-m-d') . "\n";
    ?>

&example.outputs;

    2001-03-30
    2001-03-02

&reftitle.notes;

`DateTime::modify` is an alternative when using PHP 5.2.

&reftitle.seealso;

- `DateTime::add`
- `DateTime::diff`
- `DateTime::modify`