(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.
datetimeLa date à comparer.
absoluteDoit-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)