PHP 8.0.24 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_diffReturns the difference between two DateTime objects

说明

面向对象风格

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

Returns the difference between two DateTimeInterface objects.

参数

datetime

The date to compare to.

absolute

Should the interval be forced to be positive?

返回值

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.

范例

示例 #1 DateTimeImmutable::diff() example

面向对象风格

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

过程化风格

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

以上例程会输出:

+2 days

示例 #2 DateTimeInterface::diff() during DST changeover

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

以上例程会输出:

24:30:00 (Full days: 0)

示例 #3 DateTime object comparison

注意:

DateTimeImmutable and 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);
?>

以上例程会输出:

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

参见

add a note

User Contributed Notes

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