2017-08-03 25 views
1

私はMySQL 00:00:00のフォーマットで時間を合計しようとしていますが、それらをforeachで合計しますが、合計が24:00:00になると00:00:00に開始します、と私はPHPでの合計時間

これは、それらを合計する私のコードがあるなど、合計が24:10:00、25:00:00にフォローしたい:

foreach($hours as $h){ 
$sumaHoras = date('H:i:s', strtotime($sumaHoras) + strtotime($h->horas) - strtotime('00:00')); 
} 
+0

このコードは役に立ちだと思います。 – Vladislav

+0

ありがとうValadislav –

+0

もしそれが参考になって答えのように聞こえるなら、私は答えとしてそれを掲示するでしょう。 ) – Vladislav

答えて

1

問題があることだけを返すとdate()の時間部分では、 より大きいものを一日中削除していますので、00:00から23:59までの間に何かが返されます。 date()以外のものを使用し、すべての秒が加算された場合のみ使用してください。

ので、代わりにあなたは、このような何か試してみてください:第二の問題は、(それのstrtotimeある

function sec2hours($seconds){ 
    $units = array(
    'hours' => 3600, 
    'minutes' => 60, 
    'seconds' => 1, 
); 
    foreach($units as &$unit){ 
    $quot = intval($seconds/$unit); 
    $seconds -= $quot * $unit; 
    $unit = $quot; 
    } 
    $str = array(); 
    foreach($units as $name => $value){ 
    $str[] = ($value === 0?'00':$value); 
    } 
    return implode(':',$str); 
} 

$sum = 0; 
foreach($hours as $h){ 
$sum += strtotime($h->horas) - strtotime('00:00'); 
} 
$sumaHoras = sec2hours($sum); 

)を使用すると、1つを得ればそう 、25:00のような日にロールオーバーしていなければならない時間にfalseを返します。そのように入力すると、0 - strtotime('00:00 ')になり、巨大な負の値になります。 しかし、すべての入力が00-23:00-59の間であれば問題ありません。

+0

あなたの答えをありがとう。それが役立ちます。 –

0

私はあなたが整数として、分と秒からseparatly時間を合計して、時間にすべてを変換する必要があり

 foreach ($timeArr $key=> $timevalue) { 

      $timesumArr[$key]=date('H:i:s', array_sum(array_map('strtotime', $timevalue))); 

     }