특정한 두개의 날짜 사이에 몇일이 차이나는지, 혹은 몇시간 몇분이 차이나는지 구하고 싶을때가 있습니다.
또는 현재시간부터 디데이까지 남은 시,분,초는 얼마나 되는지 알고 싶은경우도 있죠.
두 시간간의 차이를 구하는 방법을 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' 카테고리의 다른 글
[HTML/PHP] php를 활용하여 데이터를 엑셀 파일로 저장하는 방법 (115) | 2024.02.27 |
---|---|
[PHP] 간단한 예제로 알아보는 날짜 함수 총정리 (137) | 2024.02.03 |
[PHP] 특정 문자열을 기준으로 문자열 나누어 배열로 바꿔주는 함수 - Explode() 함수 사용 방법 (100) | 2024.01.11 |
[PHP] str_replace 함수로 문자열 조작하기 (89) | 2024.01.08 |
[PHP] array_key_exists() 함수: 배열 키 존재 여부 확인 (91) | 2023.12.29 |
댓글