PHP 8.5.0 RC 2 available for testing

DateTimeImmutable::sub

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

DateTimeImmutable::sub Вычитает заданное количество дней, месяцев, лет, часов, минут и секунд

Описание

#[\NoDiscard]
public DateTimeImmutable::sub(DateInterval $interval): DateTimeImmutable

Метод клонирует текущий объект даты и времени, вычитает из копии временной интервал DateInterval и возвращает изменённую копию объекта DateTimeImmutable.

Список параметров

object

Только для процедурного стиля: объект DateTime, который возвращает функция date_create(). Функция изменяет этот объект.

interval

Объект DateInterval.

Возвращаемые значения

Метод возвращает новый объект DateTimeImmutable с модифицированными данными.

Ошибки

При попытке выполнить неподдерживаемую операцию наподобие вычитания интервала DateInterval, который представляет относительный спецификатор времени next weekday или аналогичный, метод выбрасывает исключение DateInvalidOperationException.

Список изменений

Версия Описание
8.3.0 При попытке выполнить неподдерживаемую операцию вместо предупреждения метод теперь выбрасывает исключение DateInvalidOperationException.

Примеры

Пример #1 Пример вычитания интервала времени методом DateTimeImmutable::sub()

Объектно-ориентированный стиль

<?php

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

?>

Результат выполнения приведённых примеров:

2000-01-10

Пример #2 Дополнительный пример вычитания интервала времени методом 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";

?>

Результат выполнения приведённого примера:

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

Пример #3 Пример поведения при вычитании месяцев

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

?>

Результат выполнения приведённого примера:

2001-03-30
2001-03-02

Смотрите также

  • DateTimeImmutable::add() - Возвращает новый объект с добавленным количеством дней, месяцев, лет, часов, минут и секунд
  • DateTimeImmutable::diff() - Возвращает разницу между двумя объектами DateTime
  • DateTimeImmutable::modify() - Создаёт новый объект с изменённой временной меткой
Добавить

Примечания пользователей

Пользователи ещё не добавляли примечания для страницы
To Top