date_add

date_add($date, $interval)

Dodaje przedział (obiekt DateInterval) do obiektu DateTime i zwraca zmieniony obiekt. Pierwotny obiekt się zmienia. To samo co $date->add($interval).

Parametry

  • $date – zmieniany obiekt DateTime.
  • $interval – obiekt DateInterval, na przykład new DateInterval("P1M") dla jednego miesiąca.

Przykłady

$d = date_create("2026-10-01");
date_add($d, date_interval_create_from_date_string("10 days"));
echo date_format($d, "Y-m-d"); // 2026-10-11
// zapis przedziału: P = data (Y, M, D), T = godzina (H, M, S)
$d = date_create("2026-10-01");
$d->add(new DateInterval("P1M2D"));
echo $d->format("Y-m-d"); // 2026-11-03
echo date_create("2026-10-01 23:30")->add(new DateInterval("PT45M"))->format("Y-m-d H:i"); // 2026-10-02 00:15
// zmienia pierwotny obiekt, także w innej zmiennej, która na niego wskazuje
$a = date_create("2026-10-01");
$b = $a;
date_add($b, new DateInterval("P1D"));
echo $a->format("j.n."); // 2.10.
// wersja niezmienna zwraca nowy obiekt
$a = date_create_immutable("2026-10-01");
$b = $a->add(new DateInterval("P1D"));
echo $a->format("j.n.") . " " . $b->format("j.n."); // 1.10. 2.10.
// miesiąc od 31 stycznia ląduje w marcu
echo date_create("2026-01-31")->add(new DateInterval("P1M"))->format("Y-m-d"); // 2026-03-03

Na co uważać

  • Zmienia pierwotny obiekt. Przypisanie $b = $a nie kopiuje obiektu, obie zmienne wskazują na ten sam. Kopię utworzy clone, możesz też użyć DateTimeImmutable.
  • Miesiąc dodany do 31. dnia przechodzi na następny miesiąc. Koniec miesiąca pewnie zwróci modify("last day of next month").
  • Minuty zapisuje się w przedziale po T (PT45M). P45M oznacza 45 miesięcy.
  • Odejmowanie wykona date_sub().

Powiązane funkcje:
date_modify()
date_diff()
date_create()
date_sub()