227 of 410 menu

Classe DateInterval

La classe DateInterval permet de travailler avec des intervalles de temps en PHP. Elle est utilisée pour stocker la différence entre deux dates ou pour définir un intervalle dans les méthodes de manipulation des dates. L'intervalle est créé dans un format spécial.

Syntaxe

DateInterval::__construct(string $duration)

Format de l'intervalle

Le format est constitué de la lettre P (period) et des éléments :

P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W

Dans ce format : Y - années, M - mois, D - jours, T - séparateur du temps, H - heures, M - minutes, S - secondes, W - semaines.

Avant ces lettres, il faut écrire la valeur correspondante. Par exemple, 3Y signifiera trois ans, et 5Y2M désignera 5 ans et 2 mois.

Après sa création, l'objet DateInterval contiendra les propriétés suivantes :

<?php $interval->y // années $interval->m // mois $interval->d // jours $interval->h // heures $interval->i // minutes $interval->s // secondes $interval->f // microsecondes $interval->invert // 1 si l'intervalle est négatif $interval->days // nombre de jours (si créé via diff()) ?>

Regardons le fonctionnement de l'intervalle sur des exemples :

Exemple

Créons un intervalle de 1 heure, 45 minutes et 30 secondes :

<?php $interval = new DateInterval('PT1H45M30S'); var_dump($interval); ?>

Résultat de l'exécution du code :

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 0 'h' => 1 'i' => 45 's' => 30 )

Exemple

Créons un intervalle de 3 semaines et 2 jours :

<?php $interval = new DateInterval('P3W2D'); var_dump($interval); ?>

Résultat de l'exécution du code :

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 23 'h' => 0 'i' => 0 's' => 0 )

Exemple

Créons un intervalle de 5 mois, 10 jours et 6 heures :

<?php $interval = new DateInterval('P5M10DT6H'); var_dump($interval); ?>

Résultat de l'exécution du code :

DateInterval Object ( 'y' => 0 'm' => 5 'd' => 10 'h' => 6 'i' => 0 's' => 0 )

Exemple

Créons un intervalle de 2 années et 15 minutes :

<?php $interval = new DateInterval('P2YT15M'); var_dump($interval); ?>

Résultat de l'exécution du code :

DateInterval Object ( 'y' => 2 'm' => 0 'd' => 0 'h' => 0 'i' => 15 's' => 0 )

Exemple

Créons un intervalle de 1 jour, 12 heures et 30 secondes :

<?php $interval = new DateInterval('P1DT12H30S'); var_dump($interval); ?>

Résultat de l'exécution du code :

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 1 'h' => 12 'i' => 0 's' => 30 )

Exemple

Créons un intervalle négatif de 1 an et 3 mois (intervalle en arrière) :

<?php $interval = new DateInterval('P1Y3M'); $interval->invert = 1; var_dump($interval); ?>

Résultat de l'exécution du code :

DateInterval Object ( 'y' => 1 'm' => 3 'd' => 0 'h' => 0 'i' => 0 's' => 0 'invert' => 1 )

Exemple

Créons un intervalle négatif de 2 heures, 30 minutes (intervalle en arrière) :

<?php $interval = new DateInterval('PT2H30M'); $interval->invert = 1; var_dump($interval); ?>

Résultat de l'exécution du code :

DateInterval Object ( 'y' => 0 'm' => 0 'd' => 0 'h' => 2 'i' => 30 's' => 0 'invert' => 1 )

Exemple

Ajoutons un intervalle à la date actuelle :

<?php $date = new DateTime('2023-01-01'); $interval = new DateInterval('P10D'); $date->add($interval); echo $date->format('Y-m-d'); ?>

Résultat de l'exécution du code :

'2023-01-11'

Exemple

Calculons la différence entre deux dates :

<?php $date1 = new DateTime('2023-01-01'); $date2 = new DateTime('2023-02-15'); $interval = $date1->diff($date2); echo $interval->format('%m months %d days'); ?>

Résultat de l'exécution du code :

'1 months 14 days'

Voir aussi

  • classe DateTime,
    qui représente une date et une heure
  • classe DateTimeZone,
    qui représente un fuseau horaire
Français
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Nous utilisons des cookies pour le fonctionnement du site, l'analyse et la personnalisation. Le traitement des données est effectué conformément à la Politique de confidentialité.
accepter tout personnaliser refuser