2016-06-22 10 views
1

私はビジネス時代のかなり古いプロジェクトを継承しました。時間を得るために文字列から時間を追加する[PHP]

array(3) { 
    [0]=> string(8) "04:19:24" 
    [1]=> string(8) "04:32:03" 
    [2]=> string(8) "04:17:20" 
} 

全部がcompletly手続き、何クラスか何かではありません: は今、私はすべて与えられた「文字列」たとえば

の合計を決定するために苦労しています、私はこのような何かを持っていますOOP関連。今私はそれらの時間を一緒に加えることに悩まされている。

gmdatemktimestrtotimeのようないくつかの機能が見つかりましたが、それは正しいとは思われません。

また、それらをDateTimeオブジェクトに変換して追加しようとしましたが、その後で日数が過ぎました(たとえば、1日、2時間など)。 私が実際に必要とするようなものです:私は、秒にそれらを計算し、それらを追加し、バックに取得するには、その後、小さな計算を行うだけでなくそこからタイムスタンプを作成(または少なくとも考えた40:21:31

このパターン)、しかし私はそれが可能な機能を見つけませんでした。

編集1:

まあ、それはそれを行うための最善の方法である場合、私は知りませんが、私は、構文に頼ることができるので、私は配列にexplodeにこれらの文字列を行きますよそして、いくつかの簡単な計算を実行します。それに

$aPieces = explode(":", "04:19:12"); 
$iSecsFromHours = $aPieces[0]*60*60; 
$iSecsFromMinutes = $aPieces[1]*60; 
$iTotal = $iSecsFromHours + $iSecsFromMinutes + $aPieces[2]; 

を、私はすべての秒の合計を得ることができますが、それはまだHHのような形式を取得する方法上の点を開いたまま:MM:SSgmdate作品のみのために< 1日)。私は今、答えを得た任意のヒント

答えて

0

ため

おかげで、hereから撮影:

function secondsToTime($seconds) { 
    // extract hours 
    $hours = floor($seconds/(60 * 60)); 

    // extract minutes 
    $divisor_for_minutes = $seconds % (60 * 60); 
    $minutes = floor($divisor_for_minutes/60); 

    // extract the remaining seconds 
    $divisor_for_seconds = $divisor_for_minutes % 60; 
    $seconds = ceil($divisor_for_seconds); 

    // return the final array 
    $obj = array(
     "h" => (int) $hours, 
     "m" => (int) $minutes, 
     "s" => (int) $seconds, 
    ); 
    return $obj; 
} 
関連する問題