La classe DateInterval

(PHP 5 >= 5.3.0, PHP 7, PHP 8)

Introduction

Représente un intervalle de dates.

Un intervalle stocke un nombre fixe de durées (en années, mois, jours, heures, etc.) ou une chaîne relative à une durée dans un format compréhensible par le constructeur de la classe DateTime.

Plus précisement, l'information d'un objet de la classe DateInterval est une instruction pour aller d'une date/moment à une autre date/moment. Ce processus n'est pas toujours réversible.

Une façon typique de créer un objet DateInterval est en calculant la différence entre deux objets dates/moments à travers DateTimeInterface::diff().

Comme il n'y a pas une manière bien définie pour comparer les intervalles, les instances de DateInterval sont incomparables.

Synopsis de la classe

class DateInterval {
/* Propriétés */
public int $y;
public int $m;
public int $d;
public int $h;
public int $i;
public int $s;
public float $f;
public int $invert;
public mixed $days;
/* Méthodes */
public __construct(string $duration)
public static createFromDateString(string $datetime): DateInterval|false
public format(string $format): string
}

Propriétés

y

Année.

m

Nombre de mois.

d

Nombre de jours.

h

Nombre d'heures.

i

Nombre de minutes.

s

Nombre de secondes.

f

Nombre de microsecondes, en une fraction de seconde.

invert

Vaut 1 si l'intervalle représente une période de temps négative, 0 sinon. Voir la méthode DateInterval::format().

days

Si l'objet DateInterval a été créé avec la méthode DateTime::diff(), alors ce sera le nombre total de jours entre la date de début et la date de fin. Sinon, days vaudra false.

Historique

Version Description
7.4.0 Les instances de DateInterval sont désormais incomparables ; auparavant, toutes les instances DateInterval était considérées comme égale.
7.1.0 La propriété f a été ajoutée.

Sommaire

add a note

User Contributed Notes 1 note

up
3
nateb at gurutechnologies dot net
2 years ago
Many people have commented on doing a reverse interval on a date time.  I personally find a backwards year to be a little strange to think about and instead opt to work with just intervals.  This is the easiest I have found.

<?php
$one_year
= new DateInterval('P1Y');
$one_year_ago = new DateTime();
$one_year_ago->sub($one_year);
?>

Instead of:

<?php
$one_year_ago
= new DateInterval( "P1Y" );
$one_year_ago->invert = 1;
$one_year_ago = new DateTime();
$one_year_ago->add($one_year);
?>
To Top