DateInterval을 사용한 날짜 연산
DateInterval과 modify()를 사용해 기간을 더하고 뺍니다.
DateInterval을 사용한 날짜 연산은(는) CoddyKit의 무료 PHP Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 PHP Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
DateInterval 개요
DateInterval은 일, 개월, 시간 등의 시간 간격을 나타냅니다. 이는 DateTime 객체에 시간을 더하거나 빼는 PHP의 OO 방식입니다.
DateInterval 생성
ISO 8601 기간 표기법을 사용하여 DateInterval을 생성합니다:
<?php
// P = period, T = time separator
$oneYear = new DateInterval('P1Y'); // 1 year
$sixMonths = new DateInterval('P6M'); // 6 months
$tenDays = new DateInterval('P10D'); // 10 days
$twoHours = new DateInterval('PT2H'); // 2 hours (T before time)
$complex = new DateInterval('P1Y2M3DT4H5M6S');
echo $oneYear->y; // 1
echo $tenDays->d; // 10add() 및 sub()
DateInterval을 DateTime에 더하거나 뺍니다:
<?php
$dt = new DateTime('2024-01-01');
$dt->add(new DateInterval('P1Y')); // +1 year
echo $dt->format('Y-m-d'); // 2025-01-01
$dt->sub(new DateInterval('P3M')); // -3 months
echo $dt->format('Y-m-d'); // 2024-10-01두 날짜 사이의 diff()
diff()는 두 날짜 사이의 차이를 나타내는 DateInterval을 반환합니다:
<?php
$start = new DateTime('2024-01-01');
$end = new DateTime('2024-06-15');
$diff = $start->diff($end);
echo $diff->y; // years
echo $diff->m; // months
echo $diff->d; // days
echo $diff->h; // hours
echo $diff->days; // total days: 166사람이 읽기 쉬운 차이
표시할 수 있도록 DateInterval의 형식을 지정합니다:
<?php
$birthdate = new DateTime('1990-05-15');
$today = new DateTime();
$age = $birthdate->diff($today);
echo $age->y . ' years, ' . $age->m . ' months, ' . $age->d . ' days';
// Check if date is in the past
if ($diff->invert === 1) {
echo 'Date was in the past';
}DateInterval::createFromDateString()
자연어 문자열에서 DateInterval을 생성합니다:
<?php
$interval = DateInterval::createFromDateString('1 year 2 months 3 days');
$dt = new DateTime('2024-01-01');
$dt->add($interval);
echo $dt->format('Y-m-d'); // 2025-03-04
// Other examples:
DateInterval::createFromDateString('next monday');
DateInterval::createFromDateString('6 weeks');DatePeriod — 범위 순회
DatePeriod를 사용하면 일정한 간격으로 날짜 범위를 순회할 수 있습니다:
<?php
$start = new DateTime('2024-01-01');
$interval = new DateInterval('P1M'); // monthly
$end = new DateTime('2024-06-01');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $date) {
echo $date->format('Y-m') . PHP_EOL;
}
// 2024-01, 2024-02, 2024-03, 2024-04, 2024-05주간 보고서에 DatePeriod 사용
주간 날짜 기준점을 생성합니다:
<?php
$start = new DateTime('2024-01-01');
$interval = new DateInterval('P7D'); // weekly
$end = new DateTime('2024-02-01');
$weeks = new DatePeriod($start, $interval, $end);
foreach ($weeks as $week) {
echo 'Week of: ' . $week->format('Y-m-d') . PHP_EOL;
}시간 간격 비교
두 DateIntervals를 총 일수로 변환하여 크기를 비교합니다:
<?php
$a = new DateTime('2024-01-01');
$b = new DateTime('2024-06-01');
$c = new DateTime('2025-01-01');
$diff1 = $a->diff($b)->days; // 152
$diff2 = $a->diff($c)->days; // 366
echo ($diff1 < $diff2) ? 'First interval shorter' : 'First interval longer';
// First interval shorter영업일 계산
두 날짜 사이의 영업일 수를 계산합니다:
<?php
function businessDays(DateTime $from, DateTime $to): int {
$count = 0;
$cur = clone $from;
while ($cur < $to) {
$dow = (int) $cur->format('N'); // 1=Mon ... 7=Sun
if ($dow < 6) $count++;
$cur->modify('+1 day');
}
return $count;
}
$from = new DateTime('2024-05-27');
$to = new DateTime('2024-06-07');
echo businessDays($from, $to) . ' business days';만료 날짜 패턴
DateInterval을 사용하는 일반적인 구독 또는 토큰 만료 패턴입니다:
<?php
function expiresAt(string $duration = 'P30D'): string {
$dt = new DateTimeImmutable();
return $dt->add(new DateInterval($duration))->format('Y-m-d H:i:s');
}
echo expiresAt('P30D'); // 30-day trial expiry
echo expiresAt('P1Y'); // 1-year subscription expiry
echo expiresAt('PT1H'); // 1-hour token expiry빠른 확인
$dateA->diff($dateB)->days는 무엇을 반환합니까?
복습: DateInterval
핵심 사항:
new DateInterval('P1Y2M3DT4H')— ISO 8601 기간add()/sub()로 DateTime 수정diff()는 두 날짜 사이의 DateInterval을 반환합니다DatePeriod는 날짜 범위를 순회합니다- diff()에서 총 일수를 얻으려면
->days를 사용합니다 - 시간 간격이 음수인지 확인하려면
->invert를 확인합니다
자주 묻는 질문
“DateInterval을 사용한 날짜 연산” 강의는 무료인가요?
네 — “DateInterval을 사용한 날짜 연산” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 PHP Academy 강의 전체를 잠금 해제할 수 있습니다. PHP Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“DateInterval을 사용한 날짜 연산”에서 뭘 배우나요?
DateInterval과 modify()를 사용해 기간을 더하고 뺍니다. 브라우저에서 직접 실행하는 실습 코드로 PHP Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
PHP Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 PHP Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“DateInterval을 사용한 날짜 연산” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 PHP Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 PHP Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Unix 타임스탬프와 date()
- DateTime 클래스
- DateInterval을 사용한 날짜 연산
- PHP의 시간대