2011-11-10 4 views

답변

3
$a_split = explode(":", "42:00:00"); 
$b_split = explode(":", "37:30:00"); 

$a_stamp = mktime($a_split[0], $a_split[1], $a_split[2]); 
$b_stamp = mktime($b_split[0], $b_split[1], $b_split[2]); 

if($a_stamp > $b_stamp) 
{ 
$diff = $a_stamp - $b_stamp; 
}else{ 
$diff = $b_stamp - $a_stamp; 
} 

echo "difference in time (seconds): " . $diff; 

원하는 경우 date()를 사용하여 초를 HH : MM : SS로 변환하십시오.

+0

$ b_stamp가'mktime'에 잘못된 매개 변수를 사용하고 있으며 세미콜론이 누락되었습니다. 그렇지 않으면, 좋은 예가'mktime'은 여분의 시간을 적절한 필드로 롤백하기 때문입니다. –

+0

매력처럼 일하고 있습니다. – Warface

0

날짜/시간 변수와 함수는 시간을 저장하지 않을 여기에 적합하지 않습니다, 대신 시간, 분, 초의 시간 범위.

각 시간 범위를 정수 구성 요소로 나누고 단일 단위 (예 : 초)로 변환 한 다음 서로 빼고 다시 출력 시간 범위를 다시 작성하는 것이 가장 좋은 해결책 일 것입니다 귀하의 신청서와 함께.

+0

모든 exemple 볼 수 있나요? – Warface

0

나는이 테스트 havent 한, 그러나 이것은 당신이 원하는 것을 할 수 있습니다 작동하는지

function timediff($time1, $time2) { 
    list($h,$m,$s) = explode(":",$time1); 
    $t1 = $h * 3600 + $m * 60 + $s; 
    list($h2,$m2,$s2) = explode(":",$time2); 
    $seconds = ($h2 * 3600 + $m2 * 60 + $s2) - $t1; 
    return sprintf("%02d:%02d:%02d",floor($seconds/3600),floor($seconds/60)%60,$seconds % 60); 
} 
관련 문제