簡體   English   中英

24小時以上怎么加兩次

[英]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:0072: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM