我需要找到多少時間之間的時間值(他們的差異)超過24:00:00。如何找到兩個時間變量之間的時間差大於24小時
例如:我如何計算42:00:00
和37:30:00
之間的差異?
使用strtotime
,strptotime
等是無用的,因爲他們不能在23:59:59去....
我需要找到多少時間之間的時間值(他們的差異)超過24:00:00。如何找到兩個時間變量之間的時間差大於24小時
例如:我如何計算42:00:00
和37:30:00
之間的差異?
使用strtotime
,strptotime
等是無用的,因爲他們不能在23:59:59去....
$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(如果需要)。
日期/時間變量和函數不適合在這裏你不是存儲時間,而是(我假設)小時,分鐘和秒的時間跨度。
可能你最好的解決方案是將每個時間跨度分成整數分量,轉換爲單個單位(例如秒),將它們相減,然後重新構建一個適合的輸出時間跨度與您的應用程序。
任何爲例,看看它是否起作用? – Warface
我還沒有測試這一點,但是這可能會做你想要什麼:
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);
}
$ b_stamp正在使用'mktime'的錯誤參數,並且缺少一些分號。否則,就是很好的例子,因爲'mktime'把額外的時間轉移到適當的字段。 –
像魅力一樣工作。 – Warface