将总时间转换为秒

时间:2014-01-29 02:01:13

标签: php datetime

我总是像这样累计时间。

$totalTimeDiff = new DateTime("@0");
foreach($dbrecords as $row)
{
    $timeDiff = date_diff( ... two datetimes from my database ... )
    $totalTimeDiff->add($timeDiff);
}

所以$totalTimeDiff是一个DateTime对象,其中所有时间差的总和加在一起(因此是所有持续时间的总和)。如何以秒为单位获得总时间?

4 个答案:

答案 0 :(得分:0)

为什么不保持简单?

$totalseconds=0;
foreach($dbrecords as $row)
  $totalseconds+=(UNIX_TIMESTAMP(second_datetime)-UNIX_TIMESTAMP(first_datetime));

答案 1 :(得分:0)

使用strtotime功能

echo strtotime('01:00:00') - strtotime('TODAY');

答案 2 :(得分:0)

$totalTimeDiff->format('U');

答案 3 :(得分:0)

考虑到moonwave99的建议,我使用了DateInterval(不记得为什么我首先使用DateTime,可能是在项目的另一个阶段的某些事情的解决方法)并通过将每个值添加到总计来计算秒数将它转换为秒后(将小时和分钟转换为秒并将它们相加)。我这样做是通过使用DateInterval class's秒属性以及以下函数将DateInterval转换为秒(注意:仅考虑我的特定情况的天,小时,分钟和秒,因为这个数量不可能超过一个月):

function convertDateIntervalToSeconds($dateInterval)
{
    $days = $dateInterval->d * 24 * 60 * 60;
    $hours = $dateInterval->h * 60 * 60;
    $minutes = $dateInterval->i * 60;
    $seconds = $dateInterval->s;

    return $hours + $minutes + $seconds;
}