2011-11-10 31 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

任何爲例,看看它是否起作用? – Warface

0

我還沒有測試這一點,但是這可能會做你想要什麼:

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); 
} 
相關問題