Skip to main content

Qué es InteractsWithTime

Illuminate\Support\InteractsWithTime es un trait que agrupa los cálculos de tiempo, retrasos y tiempos transcurridos. Dentro del framework, más de 40 clases hacen use InteractsWithTime;, y se emplea en componentes tan diversos como caché, colas, consola o conexiones de base de datos.
El código fuente está en src/Illuminate/Support/InteractsWithTime.php. Todos sus métodos son protected, así que están pensados para ser invocados desde el interior de la clase que los usa.

Ejemplos de uso dentro del framework

Métodos

secondsUntil() — obtener segundos restantes

Devuelve los segundos que quedan hasta la fecha/hora o retraso indicados. Puede recibir un DateTimeInterface, un DateInterval o un entero de segundos.
Si pasas una fecha pasada, devuelve 0 (no toma valores negativos).

availableAt() — timestamp UNIX en el que estará disponible

Devuelve el timestamp UNIX resultante de sumar el retraso al momento actual. Se usa para calcular retrasos de jobs en colas o tiempos de expiración de la caché.
Si lo llamas sin argumentos (por defecto 0), devuelve el timestamp del momento actual.

parseDateInterval() — convertir un DateInterval en DateTime

Si recibe una instancia de DateInterval, la convierte en una instancia Carbon sumándola al momento actual. Los DateTimeInterface y enteros los devuelve sin cambios.
secondsUntil() y availableAt() invocan internamente este método.

currentTime() — timestamp UNIX del momento actual

Un wrapper simple que devuelve Carbon::now()->getTimestamp(). Se usa como base temporal en secondsUntil().

runTimeForHumans() — tiempo de ejecución en formato legible

Convierte la diferencia entre un tiempo de inicio y otro de fin registrados con microtime(true) en una cadena legible.
Por debajo de 1000 ms devuelve milisegundos con decimales como 42.15ms; a partir de 1000 ms usa el formato corto de CarbonInterval::forHumans() (1s 234ms, etc.). Pasando un segundo argumento con el tiempo final puedes convertir un intervalo ya medido.

Uso en el desarrollo de paquetes

Unificar el TTL en un driver de caché

Es útil cuando construyes un método put(key, value, ttl) en el que ttl puede ser int, DateInterval o DateTime.

Mostrar tiempo de ejecución en comandos de consola

Puedes aprovecharlo para mostrar al usuario el tiempo de proceso en el handle() de un comando Artisan.

InteractsWithTime para pruebas

Illuminate\Foundation\Testing\Concerns\InteractsWithTime es otra cosa: ofrece los métodos travel*() para manipular el tiempo en los tests (se incorpora automáticamente a TestCase).
Como el namespace es distinto del Illuminate\Support\InteractsWithTime (objeto de esta página), no los confundas.

Resumen

Si quieres crear métodos que acepten int, DateInterval o DateTimeInterface como argumento, con solo hacer use de este trait te ahorras reimplementar la lógica de conversión.

Páginas relacionadas

Última modificación el 13 de julio de 2026