2011-11-10 15 views
3

24:00:00以上の時間値(その差)までの時間を見つける必要があります。24時間以上の2時間間の時間差を見つける方法

たとえば、42:00:0037:30:00の違いを計算するにはどうすればよいですか? strtotimestrptotime、など彼らは23時59分59秒を超えることができませんので、無用であるを使用して

....

答えて

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

日付/時刻の変数と関数を使用すると、時間を記憶していないとして、ここでは適切ではありませんが、代わりに時間、分、秒の時間帯です。

各時間帯を整数コンポーネントに分割し、1つの単位(たとえば秒)に変換し、それらを互いに引き算し、適合する出力時間スパンを再構築することが最適なソリューションですあなたのアプリケーションで。

+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); 
} 
関連する問題