PHP에서 두 날짜 사이의 차이, 즉 총 일수를 구하고 싶다면 내장 함수인 date_diff를 활용하면 됩니다. 이 함수는 두 날짜 객체를 비교하여 그 차이를 DateInterval 객체 형태로 반환하며, 날짜를 계산할 수 없는 경우에는 False를 반환합니다.
date_diff 함수란?
date_diff 함수는 DateTime 객체 두 개를 인자로 받아 두 날짜 간의 간격을 계산합니다. 반환된 DateInterval 객체의 format 메서드를 사용하면 원하는 형식으로 결과를 손쉽게 출력할 수 있습니다.
예제 코드
<?php
$date_1 = date_create('23-11-2019');
$date_2 = date_create('22-1-2020');
$day_diff = date_diff($date_1, $date_2);
echo $day_diff->format('두 날짜의 차이는: %R%a일 입니다');
?>
실행 결과
두 날짜의 차이는: +60일 입니다
코드 설명
위 예제에서는 먼저 date_create 함수를 사용해 두 개의 날짜 객체를 생성합니다. 첫 번째 날짜는 2019년 11월 23일, 두 번째 날짜는 2020년 1월 22일입니다.
이후 date_diff 함수에 두 날짜 객체를 전달하면, 두 날짜 사이의 일수가 계산되어 DateInterval 객체로 반환됩니다. 이 결과를 변수 $day_diff에 저장한 뒤, format 메서드를 통해 화면에 출력하는 방식입니다.
format 문자열의 의미
format 문자열에서 사용된 기호들은 다음과 같은 의미를 가집니다.
%R : 차이의 부호를 나타냅니다. 양수일 경우 '+', 음수일 경우 '-'가 출력됩니다.
%a : 두 날짜 사이의 총 일수를 숫자로 표시합니다.
따라서 실행 결과인 '+60'은 2019년 11월 23일부터 2020년 1월 22일까지 정확히 60일의 차이가 있다는 것을 의미합니다. 부호를 제외하고 단순히 일수만 출력하고 싶다면 %a만 사용하면 됩니다.
마무리
이처럼 PHP의 date_create와 date_diff 함수를 조합하면 복잡한 날짜 계산 로직을 직접 구현하지 않고도 간단하게 두 날짜 사이의 일수를 구할 수 있습니다. 디데이 계산, 이벤트 기간 산정, 회원 가입 후 경과 일수 확인 등 다양한 실무 상황에서 유용하게 활용할 수 있습니다.