(PHP 5 >= 5.3.0, PHP 7, PHP 8)
DateTimeInterface::diff -- DateTimeImmutable::diff -- DateTime::diff -- date_diff — Retourne la différence entre deux objets DateTime
Style orienté objet
$targetObject
, bool $absolute
= false
): DateInterval$targetObject
, bool $absolute
= false
): DateIntervalStyle procédural
$baseObject
, DateTimeInterface $targetObject
, bool $absolute
= false
): DateIntervalRetourne la différence entre deux objets DateTimeInterface.
datetime
La date à comparer.
absolute
Doit-on forcer l'intervalle à être positif ?
L'objet DateInterval représente la différence entre les deux dates.
La valeur de retour représente de façon plus détaillé l'intervale de temps
à appliquer sur l'objet original ($this
ou
$originObject
) pour arriver à
$targetObject
. Cette procédure n'est pas toujours
réversible.
La méthode est consciente des changements d'heure d'été et peut donc renvoyer
un intervalle de 24 heures et 30 minutes
, comme dans l'un
des exemples. Si vous souhaitez calculer avec le temps absolu, vous devez
d'abord convertir à la fois $this
/
$baseObject
et $targetObject
en UTC.
Exemple #1 Exemple avec DateTimeImmutable::diff()
Style orienté objet
<?php
$origin = new DateTimeImmutable('2009-10-11');
$target = new DateTimeImmutable('2009-10-13');
$interval = $origin->diff($target);
echo $interval->format('%R%a days');
?>
Style procédural
<?php
$origin = date_create('2009-10-11');
$target = date_create('2009-10-13');
$interval = date_diff($origin, $target);
echo $interval->format('%R%a days');
?>
Les exemples ci-dessus vont afficher :
+2 days
Exemple #2 DateTimeInterface::diff() lors du passage à l'heure d'été
<?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";
?>
L'exemple ci-dessus va afficher :
24:30:00 (Full days: 0)
Exemple #3 Comparaison de deux objets DateTime
Note:
Les objets DateTimeImmutable ou DateTime peuvent être comparés en utilisant les opérateurs de comparaison.
<?php
$date1 = new DateTime("now");
$date2 = new DateTime("tomorrow");
var_dump($date1 == $date2);
var_dump($date1 < $date2);
var_dump($date1 > $date2);
?>
L'exemple ci-dessus va afficher :
bool(false) bool(true) bool(false)