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

Time 计算给定时间戳集的持续时间,time,php,Time,Php,我有一组开始时间和结束时间,我想计算开始时间和结束时间之间的持续时间,并将所有持续时间相加以获得总持续时间。 例如: Array ( [1] => Array ( ['intime'] => 1342086993 ['outime'] => 1342087585 ) [3] => Array ( ['intime'] =>

我有一组开始时间和结束时间,我想计算开始时间和结束时间之间的持续时间,并将所有持续时间相加以获得总持续时间。
例如:

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;
但这并没有给我适当的时间。有没有其他办法呢

用于首先将每个元素映射到持续时间,然后对其求和:

$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;
$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;

?>
似乎您的时间格式不正确:
132012年7月04:04:32 PM
应该是
13。2012年7月4日下午4:04:32

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

正确地工作。它应该给出
1342195472
而不是您
1342168834
。因此,请检查生成错误微时间的时间格式,因为代码中有一个简单的输入错误。检查:

duraton vs duration

更改后就可以了。

那些
数组之前和之后的
是故意放在那里的吗?在我看来好像语法错误。。。还有更多类似的…@DainisAbols在复制粘贴数组时犯了一个错误。这对我很有效,是的。我尝试使用值
10->15,25->35100->150,并正确获得
65
(以秒为单位)。检查此数组,数组([1]=>array([0]=>1342168834[1]=>1342175672)[3]=>array([0]=>1342179242[1]=>1342179244))它给了我1.9这是[2012年7月13日02:10:34 PM(intime)],[2012年7月13日04:04:32 PM(outtime)]和[2012年7月13日05:04:02 PM(intime)],[2012年7月13日05:04:04 PM(outtime)]的时间戳?不管怎样,你为什么不公布你得到的结果,也就是说,整个输出。好吧,看起来你的时间格式不正确:
13201207年7月04:04:32 PM
应该是
13。2012年7月4日下午4:04:32
标准时间(“2012年7月13日下午4:04:32”)正常工作它给出的是
1342195472
,而不是您
1342168834
。所以,请检查生成错误微时间的时间格式。:)只是复制粘贴错误…在代码中,它会给我一个错误..但事实并非如此..从代码中,我可以看出您在减去错误的内容。减去$out-$in,得到间隔差。
duraton vs duration