특정한 두 개의 날짜 사이에 며칠이 차이 나는지, 혹은 몇 시간 몇 분이 차이 나는지 구하고 싶을 때가 있습니다.
또는 현재시간부터 디데이까지 남은 시, 분, 초는 얼마나 되는지 알고 싶은 경우도 있죠.
두 시간 간의 차이를 구하는 방법을 php 함수를 통해서 알아보도록 하겠습니다.
함수 만들기
시작 시간과 종료시간을 받아와서 두 값 간의 차이를 구하는 함수를 만들어 보겠습니다.
function gap_time($start_time, $end_time) {
$start_time = strtotime($start_time);
$end_time = strtotime($end_time);
$diff = $end_time - $start_time;
$day = floor($diff/86400);
$diff = $diff-($day*86400);
$hours = floor($diff/3600);
$diff = $diff-($hours*3600);
$min = floor($diff/60);
$sec = $diff - ($min*60);
return sprintf("%d일 %d시간 %d분", $day, $hours, $min);
}
함수는 위와 같이 만들어 줄 수 있습니다.
값을 입력해서 출력이 잘 되는지 확인해 보겠습니다.
오늘날짜로부터 5월 5일 어린이날까지 얼마나 남았는지 보겠습니다.
gap_time("2024-04-10", "2024-05-05");
시, 분, 초를 입력해주지 않고 날짜만 넣었기 때문에 위와 같이 남은 날짜 25일만 나오게 됩니다.
그럼 현재시간으로부터 디데이까지 남은 날짜계산은 어떻게 하면 될까요?
아래 코드 설명에서 다뤄보겠습니다.
코드 설명
$start_time = strtotime($start_time);
$end_time = strtotime($end_time);
받아온 날짜를 타임스탬프 형식으로 바꿔줍니다.
이미 받아온 값이 타임스탬프 형식이라면 위의 코드는 생략해야 합니다.
$day = floor($diff/86400);
floor 함수를 통해서 소수점아래 값들은 반올림해 줍니다.
sprintf("%d일 %d시간 %d분", $day, $hours, $min);
계산한 값을 return을 통해 출력해 줍니다.
% 02d 일 이렇게 % 뒤에 02를 붙이면 자릿수를 두 자리로 맞춰줍니다.
2일이면 02일로 표기가 되는 것입니다.
그러면 아래와 같이 현재 시간을 받아와 보겠습니다.
echo gap_time(time(), "2024-05-05");
위와 같이 값을 입력받는다면 "$start_time"은 타임스탬프로 값을 받고,
"$end_time"은 기존 날짜형식으로 값을 받기 때문에 start_time값을 타임스탬프로 변환해 주는 코드는 주석처리합니다.
//$start_time = strtotime($start_time);
$end_time = strtotime($end_time);
현재 제가 게시물을 작성하는 시간 기준으로 5월 5일까지 24일 14시간 21분이 남았군요.
정확하게는 분으로 따진다면 22분이 남아야 되는데 초단위까지 계산을 해서,
21분으로 표기가 되고 있습니다. 저처럼 초단위까지는 표기하지 않길 원한다면 아래와 같이 출력을 수정해 주세요.
sprintf("% d일 % d시간 % d분", $day, $hours, $min+1);
결론
이번 포스팅에서는 php를 사용하여 두 날짜 간의 차이를 구하는 함수를 만들어 보았습니다.
이 함수는 정말 다양하게 활용될 수 있는 함수이므로,
사용 방법을 익혀두고 시간차이, 이벤트 기간 등등 여러 곳에서 활용해 보시길 바랍니다.
'코딩' 카테고리의 다른 글
[jQuery] textarea 크기 자동으로 늘리는 방법 (22) | 2024.06.15 |
---|---|
[PHP] 데이터를 엑셀 파일로 저장하는 방법 (115) | 2024.02.27 |
[PHP] 간단한 예제로 알아보는 날짜 함수 총정리 (137) | 2024.02.03 |
[jQuery] 마우스 드래그로 크기 조절 가능한 텍스트 박스 만들기 + 텍스트 박스 크기에 따라 글자 수 제한 (138) | 2024.01.29 |
[jQuery] 공공데이터 포털 api를 사용해서 사업자 등록 정보 확인하는 방법 (api 사용방법, 사업자번호 조회) (113) | 2024.01.18 |
댓글