PHP 8.2.0 Released!

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.
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top