PHP 8.1.28 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_diffRetourne la différence entre deux objets DateTime

Description

Style orienté objet

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

Style procédural

date_diff(DateTimeInterface $baseObject, DateTimeInterface $targetObject, bool $absolute = false): DateInterval

Retourne la différence entre deux objets DateTimeInterface.

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()

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 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 :

Jours totaux: 364

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)

Voir aussi

add a note

User Contributed Notes

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