DateTime::diff

DateTimeImmutable::diff

DateTimeInterface::diff

date_diff

(PHP 5 >= 5.3.0, PHP 7)

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

Description

Object oriented style

public DateTime::diff ( DateTimeInterface $targetObject [, bool $absolute = FALSE ] ) : DateInterval
public DateTimeImmutable::diff ( DateTimeInterface $targetObject [, bool $absolute = FALSE ] ) : DateInterval
public DateTimeInterface::diff ( DateTimeInterface $targetObject [, bool $absolute = FALSE ] ) : DateInterval

Procedural style

date_diff ( DateTimeInterface $originObject , DateTimeInterface $targetObject [, bool $absolute = FALSE ] ) : DateInterval

Returns the difference between two DateTimeInterface objects.

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 or FALSE on failure.

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

Examples

Example #1 DateTime::diff() example

Object oriented style

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

Procedural style

<?php
$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:

+2 days

Example #2 DateTime object comparison

Note:

As of PHP 5.2.2, DateTime objects can be compared using comparison operators.

<?php
$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() - Adds an amount of days, months, years, hours, minutes and seconds to a DateTime object
  • DateTime::sub() - Subtracts an amount of days, months, years, hours, minutes and seconds from a DateTime object