[英]how to add two time more than 24 hours
我必須編寫一個 php 函數來在超過 24 小時內添加 2 個時間變量。 時間函數
function TimeSum($a,$b)
{
list ($hour1, $min1, $sec1) = explode(':', $a);
list ($hour2, $min2, $sec2) = explode(':', $b);
$sumHour = sprintf('%02d', $hour1 + $hour2);
$sumMin = sprintf('%02d', $min1 + $min2);
$sumSec = sprintf('%02d', $sec1 + $sec2);
return $sumHour.':'.$sumMin.':'.$sumSec;
}
但問題是$a=50:15:00
和$b=22:55:00
的72:70:00
顯示結果為72:70:00
而不是73:10:00
我該如何解決?
您的代碼中有一個邏輯錯誤,您只需簡單地總結時間的每一部分,但您需要做的是:
如果秒數優於 60,您只需獲得 $number_seconds%60 的結果並將其添加到您的分鍾中並用分鍾重復,讓我向您展示:
function TimeSum($a,$b)
{
list ($hour1, $min1, $sec1) = explode(':', $a);
list ($hour2, $min2, $sec2) = explode(':', $b);
//counting number of seconds and getting extra minutes outs
$total_sec = $sec1+$sec2;
$sumSec = $total_sec%60;
$extra_min = ($total_sec-$sumSec)/60;
//counting number of minutes and getting extra hours outs
$total_min= $min1+$min2+$extra_min;
$sumMin = $total_min%60;
$extra_hr = ($total_min-$sumMin)/60;
//counting number of hours
$sumHour = $hour1 + $hour2 + $extra_hr;
return $sumHour.':'.$sumMin.':'.$sumSec;
}
您可以使用 strtotime 將分鍾和秒用作 unix 時間戳,並僅計算小時。 我確信有一個更好/更漂亮的解決方案,但這個解決方案開箱即用:
function TimeSum( $a, $b ) {
list ( $hourA, $minA, $secA ) = explode( ':', $a );
list ( $hourB, $minB, $secB ) = explode( ':', $b );
$timeStamp = strtotime( '1970-01-01 00:' . $minA . ':' . $secA );
$timeStamp += strtotime( '1970-01-01 00:' . $minB . ':' . $secB );
$minutesAndSeconds = date( ':i:s', $timeStamp );
$hours = date( 'H', $timeStamp );
return sprintf( '%02d', $hours + $hourA + $hourB ) . $minutesAndSeconds;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.