(PHP 5 >= 5.5.0, PHP 7, PHP 8)
DateTimeImmutable::sub — Subtrai uma quantidade de dias, meses, anos, horas, minutos e segundos
Retorna um novo objeto DateTimeImmutable, com o objeto DateInterval especificado substraído do objeto DateTimeImmutable original.
interval
    Um objeto DateInterval
Retorna um novo objeto DateTimeImmutable com os dados modificados.
    Se uma operação não suportada for solicitada, por exemplo usando um
    objeto DateInterval que representa especificação
    relativa de tempo como next weekday, uma
    exceção DateInvalidOperationException é lançada.
  
| Versão | Descrição | 
|---|---|
| 8.3.0 | Agora lança uma exceção DateInvalidOperationException em vez de um aviso quando uma operação não suportada for solicitada. | 
Exemplo #1 Exemplo da função 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";
?>O exemplo acima produzirá:
2000-01-10
Exemplo #2 Mais exemplos da função 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";
?>O exemplo acima produzirá:
2000-01-19 13:59:30 1992-08-15 19:56:58
Exemplo #3 Cuidado ao subtrair 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";
?>O exemplo acima produzirá:
2001-03-30 2001-03-02
