0

平均時間を取得したかったのですが、24 時間を超える時間を追加するために DateTime.add() オブジェクトを使用すると、時間が「日」に変換されるため、問題が発生しています。基本的に、これらの時間の平均を「時間」で取得したいだけです。助けてください。

$time = array();
$time[] = '00:00:58';
$time[] = '00:45:08';
$time[] = '00:00:49';
$time[] = '00:11:26';
$time[] = '02:34:39';
$time[] = '02:18:24';
$time[] = '02:24:11';
$time[] = '01:23:19';
$time[] = '00:27:30';
$time[] = '02:14:50';
$time[] = '00:48:47';
$time[] = '02:19:52';
$time[] = '02:04:29';
$time[] = '01:08:46';
$time[] = '00:06:57';
$time[] = '00:35:31';
$time[] = '02:16:59';
$time[] = '02:23:33';
$time[] = '02:36:30';
$time[] = '02:11:47';
$time[] = '02:40:44';
$time[] = '02:03:42';
$time[] = '01:45:50';
4

3 に答える 3

1

これを試して、

$total_time=0;

foreach($time as $t){
     $total_time+=strtotime($t)-1373241600;
}

したがって、$total_time は整数になり、それを 3600 と count($time) で割って平均時間を取得できます:)

$average_time = ($total_time/count($time))/3600;
于 2013-07-08T19:07:10.237 に答える
0

タイムゾーンの設定に依存したくない場合、現在の日付のタイムスタンプを減算する場合、または strtotime の遅延に悩まされている場合は、代わりに簡単な計算を使用してください。

$timestamps = array_map(function($item){
    list($h, $m, $s) = explode(':', $item);
    return intval($h) * 3600 + intval($m) * 60 + intval($s);
}, $time);
$avg = ceil(array_sum($timestamps)/count($timestamps));
echo gmdate('H:i:s', $avg);
于 2013-07-08T19:28:02.090 に答える