DateInterval 클래스
DateInterval 클래스를 사용하면 PHP에서 시간 간격을 작업할 수 있습니다.
이 클래스는 두 날짜 사이의 차이를 저장하거나 날짜 작업 메서드에서 간격을 지정하는 데 사용됩니다. 간격은 특별한 형식으로 생성됩니다.
구문
DateInterval::__construct(string $duration)
간격 형식
형식은 문자 P (period)와
다음 요소들로 구성됩니다:
P{y}Y{m}M{d}DT{h}H{m}M{s}S{w}W
이 형식에서: Y - 년, M - 월,
D - 일, T - 시간 구분자,
H - 시간, M - 분, S - 초,
W - 주.
이 문자들 앞에 해당 값을 적어야 합니다.
예를 들어, 3Y는 3년을 의미하며,
5Y2M는 5년과 2개월을 나타냅니다.
생성 후 DateInterval 객체는
다음 속성들을 포함합니다:
<?php
$interval->y // 년
$interval->m // 월
$interval->d // 일
$interval->h // 시간
$interval->i // 분
$interval->s // 초
$interval->f // 마이크로초
$interval->invert // 간격이 음수이면 1
$interval->days // 일수 (diff()로 생성된 경우)
?>
예제를 통해 간격 작업을 살펴보겠습니다:
예제
1시간, 45분, 30초의 간격을 생성합니다:
<?php
$interval = new DateInterval('PT1H45M30S');
var_dump($interval);
?>
코드 실행 결과:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 1
'i' => 45
's' => 30
)
예제
3주와 2일의 간격을 생성합니다:
<?php
$interval = new DateInterval('P3W2D');
var_dump($interval);
?>
코드 실행 결과:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 23
'h' => 0
'i' => 0
's' => 0
)
예제
5개월, 10일, 6시간의 간격을 생성합니다:
<?php
$interval = new DateInterval('P5M10DT6H');
var_dump($interval);
?>
코드 실행 결과:
DateInterval Object
(
'y' => 0
'm' => 5
'd' => 10
'h' => 6
'i' => 0
's' => 0
)
예제
2년과 15분의 간격을 생성합니다:
<?php
$interval = new DateInterval('P2YT15M');
var_dump($interval);
?>
코드 실행 결과:
DateInterval Object
(
'y' => 2
'm' => 0
'd' => 0
'h' => 0
'i' => 15
's' => 0
)
예제
1일, 12시간, 30초의 간격을 생성합니다:
<?php
$interval = new DateInterval('P1DT12H30S');
var_dump($interval);
?>
코드 실행 결과:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 1
'h' => 12
'i' => 0
's' => 30
)
예제
1년 3개월의 음수 간격(역방향 간격)을 생성합니다:
<?php
$interval = new DateInterval('P1Y3M');
$interval->invert = 1;
var_dump($interval);
?>
코드 실행 결과:
DateInterval Object
(
'y' => 1
'm' => 3
'd' => 0
'h' => 0
'i' => 0
's' => 0
'invert' => 1
)
예제
2시간 30분의 음수 간격(역방향 간격)을 생성합니다:
<?php
$interval = new DateInterval('PT2H30M');
$interval->invert = 1;
var_dump($interval);
?>
코드 실행 결과:
DateInterval Object
(
'y' => 0
'm' => 0
'd' => 0
'h' => 2
'i' => 30
's' => 0
'invert' => 1
)
예제
현재 날짜에 간격을 추가합니다:
<?php
$date = new DateTime('2023-01-01');
$interval = new DateInterval('P10D');
$date->add($interval);
echo $date->format('Y-m-d');
?>
코드 실행 결과:
'2023-01-11'
예제
두 날짜 사이의 차이를 계산합니다:
<?php
$date1 = new DateTime('2023-01-01');
$date2 = new DateTime('2023-02-15');
$interval = $date1->diff($date2);
echo $interval->format('%m months %d days');
?>
코드 실행 결과:
'1 months 14 days'
함께 보기
-
클래스
DateTime,
날짜와 시간을 나타냅니다. -
클래스
DateTimeZone,
시간대를 나타냅니다.