计算给定时间戳集的持续时间


calculate duration for the given set of timestamp

我有一组intime和outtime,我想计算intime和out之间的持续时间,并将所有持续时间相加,得到总持续时间
示例:

Array
    (
    [1] => Array
        (
            ['intime'] => 1342086993
            ['outime'] => 1342087585
        )
    [3] => Array
        (
            ['intime'] => 1342087669
            ['outtime] => 1342096165
        )
    [5] => Array
        (
            ['intime'] => 1342096339
            ['outime'] => 1342096345
        )
    )
$total_duration = 0;
foreach($logArray as $log)
{
  $duration = $log['outime'] - $log['intime'];
  $total_duration += $duration;
}
$duration_hrs = $total_duration/3600;
echo 'Time spend in hrs :'.$duration_hrs;

但这并没有给我合适的持续时间。还有其他方法吗?

使用array_map首先将每个元素映射到持续时间,然后使用array_sum对它们求和:

$durations = array_map(function ($e) {
  return $e['outtime'] - $e['intime'];
}, $logArray);
$total_duration = array_sum($durations);

您的无语法脚本,对我来说很好:

<?php
    $logArray = Array (
        1 => Array (
            'intime' => 1342086993,
            'outime' => 1342087585
        ),
        3 => Array (
            'intime' => 1342087669,
            'outime' => 1342096165
        ),
        5 => Array (
            'intime' => 1342096339,
            'outime' => 1342096345
        )
    );
    $total_duration = 0;
    foreach( $logArray as $log ) {
      $duration = $log[ 'outime' ] - $log[ 'intime' ];
      $total_duration += $duration;
        echo $duration / 3600 . "<br />";
    }
    $duration_hrs = $total_duration / 3600;
    echo 'Time spend in hrs: ' . $duration_hrs;
?>

输出:

0.16444444444444
2.36
0.0016666666666667
Time spend in hrs: 2.5261111111111 

似乎您的时间格式不正确:对于,13, July 2012 04:04:32 PM应该是13. July 2012 04:04:32 PM

strtotime('13. July 2012 04:04:32 PM')

正确工作。它应该给1342195472而不是给你1342168834。因此,请检查生成错误微时间的时间格式

$total_duration = 0;
foreach($logArray as $log)
{
  $duraton = $log['outtime'] - $log['intime'];
  $total_duration += $duration;
}
$duration_hrs = $total_duration/3600;
echo 'Time spend in hrs :'.$duration_hrs;

您的代码中有一个简单的拼写错误。检查:

duraton vs duration

改变,一切都会好起来的。