두 시간의 시간 차 구하기
본문
안녕하십니까~!
얼마전에 시간 차를 구하려고 질문을 올리고 답을 얻었습니다만..
결과에 문제가 있어서 질문 드립니다.
아래와 같이 입력하게되면 결과가 11:1 로 나타납니다.
나타내고자 하는 시간은 11:30 인데 말이죠.
무엇이 문제일까요?
꼭 좀 부탁드립니다. ^^;;
<?
$s_time ="10:00"; // 시작시간
$e_time ="21:30"; // 종료시간
$s_time_a = explode(":",$s_time);
$s_time_a = $s_time_a[0]; //시간
$s_time_b = $s_time_a[1]; //분
$e_time_a = explode(":",$e_time);
$e_time_a = $e_time_a[0]; //시간
$e_time_b = $e_time_a[1]; //분
$dis_h = $e_time_a - $s_time_a; //시간차
$dis_m = $e_time_b - $s_time_b; //분차
echo $dis_h;
echo ":";
echo $dis_m;
?>
답변 2
1.
$s_time_a = explode(":",$s_time);
$s_time_a = $s_time_a[0]; //시간
$s_time_b = $s_time_a[1]; //분 <----- 배열이었던 $s_time_a변수를 윗줄에서 바꾸어버렸는데
$s_time_a[1] 값이 남아 있을리가 없으니 분이 맞지않게 됩니다
아래쪽 종료시각에서도 마찬가지
2. 변수를 제대로 설정한다해도 시간차를 저렇게 계산하는 법은 없습니다
시작시각이 10:50, 종료시각이 11:10 이면
시간이 1시간차인가요?
분은 마이너스가 나올텐데 이게 맞는 계산법은 아니죠
시간차는 20분이 나와야 되는데 말이죠
3.시간차 계산법 -- 차이 값에서 3600을 나누고 60을 나누고 그런 방법이 있지만 그런 계산법 필요 없음
$tmpdiff=strtotime("2000-01-01 00:00:00") + strtotime($e_time) - strtotime($s_time);
$diff_time=date("H:i", $tmpdiff);
echo $diff_time;
이렇게 했을떼 시작시각이 22:30, 종료시각이 21:30 이라면 즉 종료시각이 작다면
시간차는 1시간이 아닌 23시간이 나옵니다
이것은 무엇을 의미할까요?
시작 시각이 크다는 것은 바로...
하루전 그 시각이라는 의미입니다
아주 마음에 드는 계산법이죠 ㅎㅎ
4. 위에서 시작 시각이 큰 경우 종료시각으로 바꾸도록 하려면
$diff= strtotime($e_time) - strtotime($s_time);
if($diff<0) $diff = -1* $diff;
$tmpdiff=strtotime("2000-01-01 00:00:00") + $diff;
$diff_time=date("H:i", $tmpdiff);
echo $diff_time;
대단히 감사합니다!! ^^;