Hướng dẫn date diff php

DateTimeImmutable::diff

DateTime::diff

date_diff

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

DateTimeInterface::diff -- DateTimeImmutable::diff -- DateTime::diff -- date_diffReturns the difference between two DateTime objects

Description

Object-oriented style

Parameters

datetime

The date to compare to.

absolute

Should the interval be forced to be positive?

Return Values

The DateInterval object represents the difference between the two dates.

The return value more specifically represents the clock-time interval to apply to the original object ($this or $originObject) to arrive at the $targetObject. This process is not always reversible.

The method is aware of DST changeovers, and hence can return an interval of 24 hours and 30 minutes, as per one of the examples. If you want to calculate with absolute time, you need to convert both the $this/$baseObject, and $targetObject to UTC first.

Examples

Example #1 DateTimeImmutable::diff() example

Object-oriented style

$origin = new DateTimeImmutable('2009-10-11');
$target = new DateTimeImmutable('2009-10-13');
$interval $origin->diff($target);
echo 
$interval->format('%R%a days');
?>

Procedural style

$origin date_create('2009-10-11');
$target date_create('2009-10-13');
$interval date_diff($origin$target);
echo 
$interval->format('%R%a days');
?>

The above examples will output:

Example #2 DateTimeInterface::diff() during DST changeover

$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 (Full days: %a)"), "\n";
?>

The above example will output:

Example #3 DateTime object comparison

Note:

DateTimeImmutable and DateTime objects can be compared using comparison operators.

$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");var_dump($date1 == $date2);
var_dump($date1 $date2);
var_dump($date1 $date2);
?>

The above example will output:

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

See Also

  • DateInterval::format() - Formats the interval
  • DateTime::add() - Modifies a DateTime object, with added amount of days, months, years, hours, minutes and seconds
  • DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object

There are no user contributed notes for this page.