두 시간의 시간 차 구하기

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
두 시간의 시간 차 구하기

QA

두 시간의 시간 차 구하기

본문

안녕하십니까~!

 

얼마전에 시간 차를 구하려고 질문을 올리고 답을 얻었습니다만..

 

결과에 문제가 있어서 질문 드립니다.

 

아래와 같이 입력하게되면 결과가 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; ​

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 124,245 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT