Skip to main content

Qu’est-ce que InteractsWithTime

Illuminate\Support\InteractsWithTime est un trait qui regroupe les calculs de dates, de délais et de temps écoulé. Plus de 40 classes du framework Laravel font use InteractsWithTime; et il est employé dans un large éventail de composants : cache, files d’attente, console, connexions à la base de données, etc.
Le code source se trouve dans src/Illuminate/Support/InteractsWithTime.php. Il n’expose que des méthodes protected et est conçu pour un usage interne aux classes.

Exemples d’utilisation dans le framework

Détail des méthodes

secondsUntil() — nombre de secondes restantes

Retourne le nombre de secondes restant jusqu’à une date/valeur de délai spécifiée. L’argument peut être un DateTimeInterface, un DateInterval ou un entier représentant des secondes.
Passer une date passée renvoie 0 (jamais un nombre négatif).

availableAt() — timestamp UNIX de disponibilité

Renvoie un timestamp UNIX correspondant à l’instant actuel additionné du délai indiqué. Utilisé pour les délais de jobs en file d’attente ou le calcul de durées de vie de cache.
Appelée sans argument (défaut 0), elle renvoie le timestamp de l’instant présent.

parseDateInterval() — convertit un DateInterval en DateTime

Reçue avec une instance de DateInterval, la méthode la convertit en une instance Carbon correspondant à l’instant présent additionné de l’intervalle. Les DateTimeInterface et les entiers sont renvoyés tels quels.
secondsUntil() et availableAt() appellent cette méthode en interne.

currentTime() — timestamp UNIX actuel

Un simple wrapper qui retourne Carbon::now()->getTimestamp(). Utilisé comme instant de référence par secondsUntil().

runTimeForHumans() — convertit un temps d’exécution en format lisible

Convertit l’écart entre l’instant de départ et l’instant de fin (mesurés avec microtime(true)) en une chaîne lisible.
En dessous de 1000 ms, la méthode retourne des millisecondes avec décimales comme 42.15ms ; au-dessus, elle utilise la forme abrégée forHumans() de CarbonInterval (1s 234ms, etc.). Un second argument permet de convertir un intervalle déjà mesuré.

Utilisations en développement de packages

Uniformiser le TTL d’un driver de cache

Utile lorsque vous créez une méthode put(key, value, ttl) acceptant indifféremment int, DateInterval ou DateTime comme ttl.

Afficher le temps d’exécution d’une commande console

Utile pour afficher à l’utilisateur le temps d’exécution dans le handle() d’une commande Artisan.

InteractsWithTime côté tests

Illuminate\Foundation\Testing\Concerns\InteractsWithTime est un trait distinct qui expose les méthodes travel*() permettant de manipuler le temps dans les tests (il est automatiquement intégré à TestCase).
Son namespace diffère de celui de Illuminate\Support\InteractsWithTime (le sujet de cette page) : attention à ne pas les confondre.

Récapitulatif

Si vous souhaitez concevoir une méthode acceptant indifféremment int, DateInterval ou DateTimeInterface, use de ce trait vous évite de réimplémenter la logique de conversion.

Pages associées

Dernière modification le 13 juillet 2026