PHP로 개발하다 보면 특정 날짜에 며칠을 더해야 하는 경우가 자주 발생합니다. 예를 들어, 만료일 계산이나 예약 시스템에서 마감일을 구할 때 유용하게 사용됩니다. 이 글에서는 PHP에서 $date 변수에 일수를 추가하는 대표적인 두 가지 방법을 소개합니다.
방법 1: strtotime() 함수 활용하기
strtotime() 함수는 사람이 읽기 쉬운 날짜 문자열을 Unix 타임스탬프로 변환해 줍니다. 문자열에 '+ N days' 형태로 기간을 붙여주면 손쉽게 원하는 날짜를 계산할 수 있습니다.
예제 코드
<?php
$date = "2019-11-11";
echo "날짜 출력...\n";
echo "Date = $date";
echo "\n변경된 날짜 출력...\n";
echo date('Y-m-d', strtotime($date . ' + 20 days'));
?>실행 결과
Date = 2019-11-11 2019-12-01
위 코드는 '2019-11-11'이라는 날짜에 20일을 더하여 '2019-12-01'을 반환합니다. strtotime()의 장점은 별도 객체 생성 없이 한 줄로 처리할 수 있다는 점입니다.
방법 2: date_create()와 date_add() 함수 활용하기
객체 지향적인 방식을 선호한다면 DateTime 클래스를 사용하는 것이 좋습니다. date_create()로 날짜 객체를 만들고, date_add()로 기간을 더한 뒤 date_format()으로 원하는 형식으로 출력할 수 있습니다.
예제 코드
<?php
$date = date_create("2019-11-11");
echo "날짜 출력...";
echo date_format($date, "Y/m/d");
date_add($date, date_interval_create_from_date_string("25 days"));
echo "\n변경된 날짜 출력...";
echo "\n" . date_format($date, "Y/m/d");
?>실행 결과
Displaying Date...2019/11/11 Displaying Updated Date... 2019/12/06
위 코드는 '2019-11-11'에 25일을 더해 '2019/12/06'을 출력합니다. date_interval_create_from_date_string()을 사용하면 일(day)뿐만 아니라 주(week), 개월(month), 연(year) 단위도 자유롭게 지정할 수 있습니다.
두 방법 비교 및 정리
strtotime() 방식은 간단한 날짜 계산에 적합하고 코드가 짧습니다. 반면 date_create()/date_add() 방식은 DateTime 객체를 다루므로 시간대(timezone) 설정, 날짜 차이 계산 등 복잡한 작업으로 확장하기에 유리합니다.
- 간단한 일수 계산 →
date('Y-m-d', strtotime($date . ' + N days')) - 복잡한 날짜 처리나 재사용이 필요한 경우 →
date_create()+date_add()
상황에 맞는 방법을 선택하여 효율적으로 날짜를 처리해 보시기 바랍니다.