소요되는 시간 계산을 하고 싶은데요. 채택완료

A의 값은 2017:01:06 12:30:00 이고

B의 값은 2017:01:06 12:55:30 이라고 하면

소요된 시간이 25분 30초 인데...

이걸 계산해서 25분 30초로 출력하려면 어떻게 해야 할까요? 

답변 5개

채택된 답변
+20 포인트
Copy
$a = strtotime("2017:01:06 12:30:00");$b = strtotime("2017:01:06 12:55:30");$timestamp = $b - $a;$second = $timestamp % 60;$minute = intval($timestamp / 60);$hour = intval($timestamp / 3600);$day = intval($timestamp / 86400); if( $day > 0 ) echo $day ."일 ";if( $hour > 0 ) echo $day ."시간 ";if( $minute > 0 ) echo $day ."분 ";echo $second ."초";
로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

망토 님, 천재셈 !!
위 적어주신 코드 결과값이 0분 30초로 출력되는데, 정상인가요?
ㅠㅠ 저도 그렇네요...

댓글을 작성하려면 로그인이 필요합니다.

DateTime 클래스는 php5 이상만 지원해요... 뭐 지금 php5 아래 버전 쓰는곳은 없겠지만... 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

<?php

$date1 = new DateTime('2017:01:06 12:30:00');

$date2 = new DateTime('2017:01:06 12:55:30');

$diff = date_diff($date1, $date2);

echo '차이나는 시간: '.$diff->y .'년 '.$diff->m .'월 '.$diff->d .'일 '.$diff->h .'시 '.$diff->i .'분 '.$diff->s .'초';

?>

===>

차이나는 시간: 0년 0월 0일 0시 25분 30초 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

그냥단순하게 

A의 값은 2017:01:06 12:30:00 이고

B의 값은 2017:01:06 12:55:30 이라고 하면

$a = 20170106123000

$b = 20170106125530

이렇게 전체를 숫자로해서 빼기해서 이후에 data함수로 뿌려줘도 될것같네요

로그인 후 평가할 수 있습니다

답변에 대한 댓글 4개

이런 방법의 헛점을 알려드리죠.

$a = 20170106123000
$b = 20170106130030

이렇게 13:00:30 와 12:30:00 의 계산은??
연도4자리 월2자리 일2자리 시간2자리 분2자리 초2자리 고정이 되어있으니
뒤에서부터 읽어오면 시간인지 분인지 초인지 일인지 계산이될것같네요
아아아 이제 이해했네요 헛점이 아니라
완전한 실패네요
$a = "2017:01:06 12:30:00";
$b = "2017:01:06 12:55:30";

$date1 = new DateTime($a);
$date2 = new DateTime($b);

echo $date1->diff($date2)->format("%a 일, %h 시간 %i 분 %s 초<br>");

댓글을 작성하려면 로그인이 필요합니다.

오타...

11번줄에 분을 출력해야하는데 시간 출력하네요. ㅋㅋ

아니 변수에 이름까지 써줬는데 갖다 쓰더라도 이해를 합시다!!...

한번씩 이해하려고 노력했으면 다들 찾았을텐데 ㅠ ㅠ

if( $minute > 0 ) echo $minute ."분 "; 

10번줄은

if( $hour > 0 ) echo $hour ."분 "; 

빠른 코딩을 위해 복사 붙여넣기 신공을 쓰다보면 종종하는 실수...

로그인 후 평가할 수 있습니다

답변에 대한 댓글 2개

3번 살펴봤는데, 까막눈이라 못 찾았어요.ㅎㅎ
감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고