Skip to main content

Cos’è InteractsWithTime

Illuminate\Support\InteractsWithTime è un trait che raccoglie i calcoli di tempo, ritardo e durata. All’interno del framework Laravel oltre 40 classi usano use InteractsWithTime;: è impiegato in un’ampia gamma di componenti come cache, queue, console e connessioni al database.
Il codice sorgente si trova in src/Illuminate/Support/InteractsWithTime.php. È composto solo da metodi protected e si presuppone l’uso dall’interno della classe.

Esempi di utilizzo nel framework

Descrizione dei metodi

secondsUntil() — ottiene i secondi rimanenti

Restituisce i secondi rimanenti fino al datetime o al ritardo indicato. L’argomento può essere DateTimeInterface, DateInterval o un intero di secondi.
Se passi un datetime nel passato, restituisce 0 (non diventa negativo).

availableAt() — timestamp UNIX di disponibilità

Restituisce il timestamp UNIX ottenuto sommando il ritardo all’istante corrente. È usato per calcolare il delay dei job in coda e le scadenze della cache.
Chiamato senza argomenti (default 0) restituisce il timestamp dell’istante corrente.

parseDateInterval() — converte DateInterval in DateTime

Se riceve un’istanza DateInterval, la aggiunge all’istante corrente e restituisce un’istanza Carbon. DateTimeInterface e i valori interi vengono restituiti così come sono.
secondsUntil() e availableAt() chiamano internamente questo metodo.

currentTime() — timestamp UNIX dell’istante corrente

Semplice wrapper che restituisce Carbon::now()->getTimestamp(). È usato come istante di riferimento in secondsUntil().

runTimeForHumans() — durata di esecuzione in formato leggibile

Converte in una stringa leggibile la differenza tra l’istante iniziale e quello finale registrati con microtime(true).
Sotto i 1000ms restituisce millisecondi con decimali come 42.15ms; da 1000ms in su usa la forma abbreviata forHumans() di CarbonInterval (1s 234ms, ecc.). Passando l’istante finale come secondo argomento puoi convertire un intervallo già misurato.

Utilizzo nello sviluppo di pacchetti

Uniformare il TTL nei driver di cache

Utile per creare metodi come put(key, value, ttl) che accettano int, DateInterval o DateTime come ttl.

Mostrare il tempo di esecuzione di un comando console

Puoi usarlo nell’handle() di un comando Artisan per mostrare all’utente il tempo di elaborazione.

InteractsWithTime per i test

Illuminate\Foundation\Testing\Concerns\InteractsWithTime è una cosa diversa: fornisce i metodi travel*() per manipolare il tempo nei test (viene automaticamente incluso in TestCase).
Attenzione a non confonderlo con Illuminate\Support\InteractsWithTime (oggetto di questa pagina): il namespace è diverso. Se vuoi creare metodi che accettino indifferentemente int, DateInterval o DateTimeInterface, basta use di questo trait e non dovrai reimplementare la logica di conversione.

Pagine correlate

Ultima modifica il 13 luglio 2026