(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateTimeInterface::diff -- DateTimeImmutable::diff -- DateTime::diff -- date_diff — Возвращает разницу между двумя объектами DateTime
Объектно-ориентированный стиль
$targetObject
, bool $absolute
= false
): DateInterval$targetObject
, bool $absolute
= false
): DateIntervalПроцедурный стиль
$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)