Skip to main content

Was ist InteractsWithTime?

Illuminate\Support\InteractsWithTime ist ein Trait, der Berechnungen zu Zeit, Verzögerung und verstrichener Zeit bündelt. Innerhalb des Laravel-Frameworks verwenden über 40 Klassen use InteractsWithTime; — er kommt in einer breiten Palette von Komponenten wie Cache, Queue, Console oder Database Connection zum Einsatz.
Der Quellcode befindet sich unter src/Illuminate/Support/InteractsWithTime.php. Er besteht ausschließlich aus protected-Methoden und ist darauf ausgelegt, klassenintern aufgerufen zu werden.

Beispiele für die Nutzung im Framework

Erläuterung der Methoden

secondsUntil() — verbleibende Sekunden ermitteln

Gibt die Anzahl der Sekunden bis zu einem angegebenen Zeitpunkt bzw. Verzögerungswert zurück. Als Argument sind DateTimeInterface, DateInterval oder ein ganzzahliger Sekundenwert erlaubt.
Wenn Sie ein Datum in der Vergangenheit übergeben, wird 0 zurückgegeben (nie negativ).

availableAt() — UNIX-Zeitstempel der Verfügbarkeit

Gibt einen UNIX-Zeitstempel zurück, der sich aus der aktuellen Zeit zzgl. einer Verzögerung ergibt. Wird für Job-Verzögerungen in der Queue und die Berechnung von Cache-Ablaufzeiten genutzt.
Ohne Argument (Standard 0) wird der aktuelle Zeitstempel zurückgegeben.

parseDateInterval() — DateInterval in DateTime umwandeln

Erhält die Methode eine DateInterval-Instanz, wird diese zur aktuellen Zeit addiert und als Carbon-Instanz zurückgegeben. DateTimeInterface oder Integer werden unverändert zurückgeliefert.
secondsUntil() und availableAt() rufen intern diese Methode auf.

currentTime() — aktueller UNIX-Zeitstempel

Ein schlichter Wrapper, der Carbon::now()->getTimestamp() zurückgibt. Wird als Referenzzeit für secondsUntil() verwendet.

runTimeForHumans() — Laufzeit in lesbarer Form

Wandelt die Differenz zwischen einem mit microtime(true) erfassten Start- und Endzeitpunkt in eine lesbare Zeichenkette um.
Werte unter 1000 ms werden als Millisekunden mit Kommastellen wie 42.15ms zurückgegeben; ab 1000 ms verwendet Laravel das Kurzformat des CarbonInterval::forHumans() (etwa 1s 234ms). Über das zweite Argument können Sie auch einen bereits gemessenen Zeitraum umwandeln.

Einsatz in der Paketentwicklung

Einheitliche TTL für Cache-Treiber

Nützlich, wenn Sie eine Methode put(key, value, ttl) anbieten wollen, deren ttl sowohl int, DateInterval als auch DateTime akzeptiert.

Laufzeitanzeige in Console-Commands

Nützlich, um dem Nutzer in der handle()-Methode eines Artisan-Commands die Verarbeitungszeit anzuzeigen.

InteractsWithTime für Tests

Illuminate\Foundation\Testing\Concerns\InteractsWithTime ist etwas anderes: Es stellt in Testfällen travel*()-Methoden zur Manipulation der Zeit bereit (und ist automatisch in TestCase eingebunden).
Der Namensraum unterscheidet sich vom Illuminate\Support\InteractsWithTime (dem Thema dieser Seite) — verwechseln Sie beide bitte nicht.

Zusammenfassung

Wenn Sie eine Methode entwerfen wollen, die als Argument int, DateInterval oder DateTimeInterface akzeptiert, sparen Sie sich mit use dieses Traits die erneute Implementierung der Konvertierungslogik.

Verwandte Seiten

Zuletzt geändert am 13. Juli 2026