DateTimeInterface::diff
DateTimeImmutable::diff
DateTime::diff
date_diff
(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
Description
Style orienté objet
Liste de paramètres
datetime
-
La date à comparer.
absolute
-
Doit-on forcer l'intervalle à être positif ?
Valeurs de retour
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.
Exemples
Exemple #1 Exemple avec DateTimeImmutable::diff()
<?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');
?>
Les exemples ci-dessus vont afficher :
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 :
Exemple #3 Calcul d'intervalle avec DateTimeInterface::diff()
La valeur renvoyée par la méthode est le temps exact qu'il faut pour aller
de $this
à $targetObject
.
La comparaison entre le 1er janvier et le 31 décembre renvoie donc 364 jours
et non 365 (pour les années non bissextiles).
<?php
$originalTime = new DateTimeImmutable("2023-01-01 UTC");
$targedTime = new DateTimeImmutable("2023-12-31 UTC");
$interval = $originalTime->diff($targedTime);
echo "Jours totaux: ", $interval->format("%a"), "\n";
?>
L'exemple ci-dessus va afficher :
Exemple #4 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)