DateTimeInterface::diff

DateTimeImmutable::diff

DateTime::diff

date_diff

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

DateTimeInterface::diff -- DateTimeImmutable::diff -- DateTime::diff -- date_diffВозвращает разницу между двумя объектами DateTime

Описание

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

public DateTimeInterface::diff(DateTimeInterface $targetObject, bool $absolute = false): DateInterval
public DateTimeImmutable::diff(DateTimeInterface $targetObject, bool $absolute = false): DateInterval
public DateTime::diff(DateTimeInterface $targetObject, bool $absolute = false): DateInterval

Процедурный стиль

date_diff(DateTimeInterface $baseObject, DateTimeInterface $targetObject, bool $absolute = false): DateInterval

Возвращает разницу между двумя объектами DateTimeInterface.

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

datetime

Дата и время для сравнения.

absolute

Используется, чтобы вернуть абсолютную разницу.

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

DateInterval объект представляет разницу между двумя датами.

Возвращаемое значение более конкретно представляет временной интервал для применения к исходному объекту ($this или $originObject), чтобы прийти к $targetObject. Этот процесс не всегда обратим.

Метод учитывает смену часовых поясов и поэтому может возвращать интервал 24 hours and 30 minutes, как в одном из примеров. Если вы хотите рассчитывать по абсолютному времени, вам необходимо сначала преобразовать $this/$baseObject и $targetObject в UTC.

Примеры

Пример #1 Пример использования DateTimeImmutable::diff()

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

<?php
$origin
= new DateTimeImmutable('2009-10-11');
$target = new DateTimeImmutable('2009-10-13');
$interval = $origin->diff($target);
echo
$interval->format('%R%a дней');
?>

Процедурный стиль

<?php
$origin
= date_create('2009-10-11');
$target = date_create('2009-10-13');
$interval = date_diff($origin, $target);
echo
$interval->format('%R%a дней');
?>

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

+2 days

Пример #2 Пример использования DateTimeInterface::diff() во время перехода на летнее время

<?php
$originalTime
= new DateTimeImmutable("2021-10-30 09:00:00 Europe/London");
$targedTime = new DateTimeImmutable("2021-10-31 08:30:00 Europe/London");
$interval = $originalTime->diff($targedTime);
echo
$interval->format("%H:%I:%S (Полных дней: %a)"), "\n";
?>

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

24:30:00 (Полных дней: 0)

Пример #3 Сравнение объектов DateTime

Замечание:

Объекты DateTimeImmutable и DateTime могут сравниваться при помощи операторов сравнения.

<?php
$date1
= new DateTime("now");
$date2 = new DateTime("tomorrow");

var_dump($date1 == $date2);
var_dump($date1 < $date2);
var_dump($date1 > $date2);
?>

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

bool(false)
bool(true)
bool(false)

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

  • DateInterval::format() - Форматирует интервал
  • DateTime::add() - Изменяет объект DateTime, добавляя количество дней, месяцев, лет, часов, минут и секунд
  • DateTime::sub() - Изменяет указанный объект DateTime, вычитая указанный объект DateInterval.