DateInterval 클래스

DateInterval 클래스를 사용하면 PHP에서 시간 간격을 작업할 수 있습니다. 이 클래스는 두 날짜 사이의 차이를 저장하거나 날짜 작업 메서드에서 간격을 지정하는 데 사용됩니다. 간격은 특별한 형식으로 생성됩니다.

구문

phpDateInterval::__construct(string $duration)

간격 형식

형식은 문자 P (period)와 다음 요소들로 구성됩니다:

phpP{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<?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<?php
  $interval = new DateInterval('PT1H45M30S');
  var_dump($interval);
?>

코드 실행 결과:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 0
  'h' => 1
  'i' => 45
  's' => 30
)

예제

3주와 2일의 간격을 생성합니다:

php<?php
  $interval = new DateInterval('P3W2D');
  var_dump($interval);
?>

코드 실행 결과:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 23
  'h' => 0
  'i' => 0
  's' => 0
)

예제

5개월, 10일, 6시간의 간격을 생성합니다:

php<?php
  $interval = new DateInterval('P5M10DT6H');
  var_dump($interval);
?>

코드 실행 결과:

phpDateInterval Object
(
  'y' => 0
  'm' => 5
  'd' => 10
  'h' => 6
  'i' => 0
  's' => 0
)

예제

2년과 15분의 간격을 생성합니다:

php<?php
  $interval = new DateInterval('P2YT15M');
  var_dump($interval);
?>

코드 실행 결과:

phpDateInterval Object
(
  'y' => 2
  'm' => 0
  'd' => 0
  'h' => 0
  'i' => 15
  's' => 0
)

예제

1일, 12시간, 30초의 간격을 생성합니다:

php<?php
  $interval = new DateInterval('P1DT12H30S');
  var_dump($interval);
?>

코드 실행 결과:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 1
  'h' => 12
  'i' => 0
  's' => 30
)

예제

1년 3개월의 음수 간격(역방향 간격)을 생성합니다:

php<?php
  $interval = new DateInterval('P1Y3M');
  $interval->invert = 1;
  var_dump($interval);
?>

코드 실행 결과:

phpDateInterval Object
(
  'y' => 1
  'm' => 3
  'd' => 0
  'h' => 0
  'i' => 0
  's' => 0
  'invert' => 1
)

예제

2시간 30분의 음수 간격(역방향 간격)을 생성합니다:

php<?php
  $interval = new DateInterval('PT2H30M');
  $interval->invert = 1;
  var_dump($interval);
?>

코드 실행 결과:

phpDateInterval Object
(
  'y' => 0
  'm' => 0
  'd' => 0
  'h' => 2
  'i' => 30
  's' => 0
  'invert' => 1
)

예제

현재 날짜에 간격을 추가합니다:

php<?php
  $date = new DateTime('2023-01-01');
  $interval = new DateInterval('P10D');
  $date->add($interval);
  echo $date->format('Y-m-d');
?>

코드 실행 결과:

php'2023-01-11'

예제

두 날짜 사이의 차이를 계산합니다:

php<?php
  $date1 = new DateTime('2023-01-01');
  $date2 = new DateTime('2023-02-15');
  $interval = $date1->diff($date2);
  echo $interval->format('%m months %d days');
?>

코드 실행 결과:

php'1 months 14 days'

함께 보기

  • 클래스 DateTime,
    날짜와 시간을 나타냅니다.
  • 클래스 DateTimeZone,
    시간대를 나타냅니다.