Skip to main content

InteractsWithTime란

Illuminate\Support\InteractsWithTime은, 시간·지연·경과 시간의 계산을 모은 트레이트입니다. Laravel 프레임워크 내에서는 40개 이상의 클래스가 use InteractsWithTime;을 사용하고 있으며, 캐시·큐·콘솔·데이터베이스 커넥션 등 폭넓은 컴포넌트에서 사용되고 있습니다.
소스 코드는 src/Illuminate/Support/InteractsWithTime.php에 있습니다. protected 메서드만으로 구성되어 있으며, 클래스 내부에서 호출하는 용도를 전제로 합니다.

프레임워크 내의 사용 예

메서드 해설

secondsUntil() — 남은 초 수 취득

지정한 일시·지연값까지의 남은 초 수를 반환합니다. 인수에는 DateTimeInterface·DateInterval·초 수의 정수값 중 하나를 전달할 수 있습니다.
과거의 일시를 전달하면 0을 반환합니다(음수가 되지 않습니다).

availableAt() — 이용 가능해지는 UNIX 타임스탬프

현재 시각에 지연을 가산한 UNIX 타임스탬프를 반환합니다. 큐의 잡 지연이나 캐시의 유효 기한 계산에 사용됩니다.
인수 없이(기본값 0)로 호출하면 현재 시각의 타임스탬프를 반환합니다.

parseDateInterval() — DateInterval을 DateTime으로 변환

DateInterval 인스턴스를 받으면, 현재 시각에 가산한 Carbon 인스턴스로 변환하여 반환합니다. DateTimeInterface나 정수값은 그대로 반환합니다.
secondsUntil()availableAt()은 내부에서 이 메서드를 호출합니다.

currentTime() — 현재 시각의 UNIX 타임스탬프

Carbon::now()->getTimestamp()를 반환하는 심플한 래퍼입니다. secondsUntil()의 기준 시각으로 사용됩니다.

runTimeForHumans() — 실행 시간을 사람이 읽기 쉬운 형식으로

microtime(true)로 기록한 시작 시각과 종료 시각의 차이를, 읽기 쉬운 문자열로 변환합니다.
1000ms 미만은 42.15ms처럼 소수점 있는 밀리초, 1000ms 이상은 CarbonInterval의 forHumans() 단축 형식(1s 234ms 등)으로 반환합니다. 두 번째 인수에 종료 시각을 전달함으로써, 측정된 구간을 변환할 수도 있습니다.

패키지 개발에서의 활용

캐시 드라이버의 TTL 통일

put(key, value, ttl)ttl로서 int·DateInterval·DateTime 중 어느 것이라도 받아들이는 메서드를 만들 때 편리합니다.

콘솔 커맨드의 처리 시간 표시

Artisan 커맨드의 handle()에서 처리 시간을 사용자에게 표시할 때 활용할 수 있습니다.

테스트용 InteractsWithTime

Illuminate\Foundation\Testing\Concerns\InteractsWithTime은 별개의 것이며, 테스트 케이스에서 시간을 조작하는 travel*() 메서드를 제공합니다(TestCase에 자동적으로 포함됩니다).
Illuminate\Support\InteractsWithTime(이 페이지의 대상)과는 네임스페이스가 다르므로, 혼동하지 않도록 주의해 주세요.

정리

인수로 int·DateInterval·DateTimeInterface 중 어느 것이라도 받아들이는 메서드를 만들고 싶은 경우, 이 트레이트를 use하는 것만으로 변환 로직을 다시 구현하지 않아도 됩니다.

관련 페이지

마지막 수정일 2026년 7월 13일