(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::sub — Sustrae una cantidad de días, meses, años, horas, minutos y segundos
Devuelve un nuevo objeto DateTimeImmutable, con el objeto DateInterval especificado sustraído del objeto DateTimeImmutable especificado.
interval
    Un objeto DateInterval
Retorna un nuevo objeto DateTimeImmutable con los datos modificados.
    Si se intenta realizar una operación no soportada, como usar un objeto
    DateInterval que represente especificaciones de tiempo
    relativas como próximo día de la semana, se lanzará una
    DateInvalidOperationException.
  
| Versión | Descripción | 
|---|---|
| 8.3.0 | Ahora lanza una DateInvalidOperationException en lugar de una advertencia cuando se intenta realizar una operación no soportada. | 
Ejemplo #1 Ejemplo de DateTimeImmutable::sub()
Estilo orientado a objetos
<?php
$date = new DateTimeImmutable('2000-01-20');
$newDate = $date->sub(new DateInterval('P10D'));
echo $newDate->format('Y-m-d') . "\n";
?>Los ejemplos anteriores mostrarán:
2000-01-10
Ejemplo #2 Más ejemplos de DateTimeImmutable::sub()
<?php
$date = new DateTimeImmutable('2000-01-20');
$newDate = $date->sub(new DateInterval('PT10H30S'));
echo $newDate->format('Y-m-d H:i:s') . "\n";
$date = new DateTimeImmutable('2000-01-20');
$newDate = $date->sub(new DateInterval('P7Y5M4DT4H3M2S'));
echo $newDate->format('Y-m-d H:i:s') . "\n";
?>El ejemplo anterior mostrará:
2000-01-19 13:59:30 1992-08-15 19:56:58
Ejemplo #3 Tenga cuidado al substraer meses
<?php
$date = new DateTimeImmutable('2001-04-30');
$interval = new DateInterval('P1M');
$newDate1 = $date->sub($interval);
echo $newDate1->format('Y-m-d') . "\n";
$newDate2 = $newDate1->sub($interval);
echo $newDate2->format('Y-m-d') . "\n";
?>El ejemplo anterior mostrará:
2001-03-30 2001-03-02
